【问题标题】:Efficient casting of int to double有效地将int转换为double
【发布时间】:2014-08-15 08:53:00
【问题描述】:

我想减去 2 个双精度数并将结果转换为整数。

 d = 1.41384;
 d1 = 1.4133;

 d2 = (d-d1); /// 0.0005399999999

 int i  = (int) ( d2 /0.00001);  // 53
 int i1 = (int) Math.ceil(( d2 /0.00001)); //54

Double 不能表示所有值,因此减法可能会导致错误值,如上例所示。减法的值是否也会比预期的略大? (例如 0.00540000000001) Math.ceil 在这种情况下给了我正确的答案,但是有没有更优雅的方法来解决这个问题?

【问题讨论】:

  • 问题发生在之前减法...
  • Math.ceil 替换为Math.round,使其适用于所有情况。

标签: java casting int double


【解决方案1】:

您的问题比这更基本,甚至:您认为1.41384 的值实际上并不是那个值,而是略有不同。至少在这种情况下,减法很可能是准确的,尽管将其转换回字符串会稍微四舍五入。

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多