无限双运算产生无限java/android studio

14ifxucb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(466)

我试着除法,结果是无穷大。有人能帮我解释一下为什么会这样吗?
我搜索了一些论坛,但没有找到答案。
我有这样的想法:

  1. public class CalculoSapIsolada extends AppCompatActivity
  2. {
  3. double areaAcoX;
  4. double numeroBarrasX;
  5. double areaBarraX;
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState)
  8. {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_calculo_sap_isolada);
  11. //Here is where i get the value of areaBarraX
  12. if(SapataIsolada.getAço()==50)
  13. {
  14. final Spinner staticSpinner = (Spinner) findViewById(R.id.spinner_diametro_aço_x);
  15. ArrayAdapter<CharSequence> staticAdapter = ArrayAdapter.createFromResource(this, R.array.diametro_aço_CA_50, android.R.layout.simple_spinner_item);
  16. staticAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  17. staticSpinner.setAdapter(staticAdapter);
  18. staticSpinner.setPrompt("Selecione o diâmetro da armadura");
  19. staticSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
  20. {
  21. @Override
  22. public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
  23. {
  24. Object item = adapterView.getItemAtPosition(i);
  25. if (i == 0) {
  26. diametroAçoX = 0.5;
  27. areaBarraX = 0.196;
  28. }
  29. if (i == 1) {
  30. diametroAçoX = 0.63;
  31. areaBarraX = 0.31;
  32. }
  33. if (i == 2) {
  34. diametroAçoX = 0.8;
  35. areaBarraX = 0.5;
  36. }
  37. if (i == 3) {
  38. diametroAçoX = 1;
  39. areaBarraX = 0.785;
  40. }
  41. if (i == 4) {
  42. diametroAçoX = 1.25;
  43. areaBarraX = 1.22;
  44. }
  45. if (i == 5) {
  46. diametroAçoX = 1.6;
  47. areaBarraX = 2.01;
  48. }
  49. if (i == 6) {
  50. diametroAçoX = 2;
  51. areaBarraX = 3.14;
  52. }
  53. }
  54. @Override
  55. public void onNothingSelected(AdapterView<?> adapterView) {
  56. }
  57. });
  58. }
  59. /* the value of areaAcoX is calculated previously and during the testrun it receives areaAcoX=11.36016 and the value of areaBarraX=0.5 */
  60. numeroBarrasX=areaAcoX/areaBarraX;
  61. Button calcular =(Button)findViewById(R.id.calcular_resultado);
  62. calcular.setOnClickListener(new View.OnClickListener()
  63. {
  64. @Override
  65. public void onClick(View view)
  66. {
  67. //in altura.setText, areaAcoX==11.36016
  68. TextView altura = (TextView)findViewById(R.id.alturaTotal);
  69. altura.setText(""+areaAcoX);
  70. //In ladoLtopo.setText, areaBarraX==0.5
  71. TextView ladoLtopo = (TextView)findViewById(R.id.ladoL_topo);
  72. ladoLtopo.setText(""+areaBarraX);
  73. //In numBarrasX.setText, numeroBarrasX==Infinity
  74. TextView numBarrasX = (TextView)findViewById(R.id.numeroBarras_x);
  75. numBarrasX.setText(""+numeroBarrasX);
  76. });
  77. }
  78. }

我在这里没有显示的代码中有一些类似的操作,它们的值中没有无穷大的错误。

uz75evzq

uz75evzq1#

用0.0除以类型double得到无穷大。也许这一行之前有一个除以0.0的值 areaBarraX 已初始化:

  1. numeroBarrasX=areaAcoX/areaBarraX;

相关问题