【问题标题】:Multiplying doubles in java?在java中乘以双打?
【发布时间】:2012-06-15 12:11:00
【问题描述】:

我正在尝试将相同的双倍(平方)相乘,但结果错误。当我自己显示双倍时,数字是正确的,但是当我将其自身相乘时,它会得出错误的数字。我已经尝试使用 math.pow 函数并得到相同的结果。

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

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

【问题讨论】:

  • 可以试试 hTemp = height.doubleValue();双 bmi = (hTemp *hTemp);
  • 是否有特定原因,为什么要使用包装类?
  • 使用你所说的'height = 74 * .0254',现在将高度平方,我的输出是 3.532?
  • 我无法使用原始类型来字符串。有没有更简单的方法?
  • 它应该是 3.532 但不知何故它在程序中显示为 16。

标签: java android math double multiplication


【解决方案1】:

查看 Stephen C 的这篇精彩文章。

https://stackoverflow.com/a/5385202/1214163

它应该提供你需要的一切。他建议,如果您需要处理大数字,请使用 BigDecimal

【讨论】:

  • BigDecimal 是一个很棒的课程。我觉得用它做乘法比较难,但这可能是因为我对这门课缺乏经验。通过将 Double.parseDouble(myPrefs.getString("Heightent",""))*.0254 放在括号中,它解决了问题。不过我会接受你的回答,因为 BigDecimal 是一个很好用和熟悉的类。
【解决方案2】:

我都试过了

    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);

计算

而且到处都一样.....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2015-08-21
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多