在Java中如何对双精度数进行乘法运算?

4

我试图将同一个double数值进行乘法运算(平方),但结果却出现错误。当我单独显示该double数值时,数值是正确的,但当我将其乘以自己时,结果就出现了错误。我已经尝试使用math.pow函数,但结果仍然相同。

    Double height=Double.parseDouble(myPrefs.getString("Heightent",""))*.0254;
    Double bmi = (height*height);
    dbmi.setText(bmi.toString());

身高以英寸为单位在不同的活动中输入。当我在文本框中显示身高时,它显示正确的数字。例如,输入的身高是74英寸,当我将身高放入TextView中时,显示1.8796。但是当我使用上面的代码时,数字16会显示在TextView dbmi中。有什么帮助吗?


可以尝试使用以下代码:hTemp = height.doubleValue(); Double bmi = (hTemp * hTemp); - Dheeresh Singh
你使用包装类的原因是什么? - Kirill Rakhman
根据您所说的“height = 74 * .0254”,现在将身高平方,我的输出结果是3.532? - David Kroukamp
我无法将原始类型转换为字符串。有更简单的方法吗? - user357032
应该是3.532,但在程序中却以16的形式出现。 - user357032
显示剩余2条评论
2个回答

3

BigDecimal是一个很棒的类。不过我觉得用它进行乘法运算有点困难,这可能是因为我对这个类不够熟悉。但是把Double.parseDouble(myPrefs.getString("Heightent",""))*.0254放在括号里就可以解决问题了。我会接受你的答案,因为BigDecimal是一个非常好用且值得熟悉的类。 - user357032

1

我尝试了两种方法

    Double height=Double.parseDouble("74")*.0254;
    Double bmi = (height*height);
    System.out.println("first " + bmi);


      height=Double.parseDouble("74");
      double temp = height.doubleValue()*.0254;
      bmi = (temp*temp);
      System.out.println("Second " + bmi);

并且在 Calc 上也是一样的。

在任何地方都是相同的...... enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接