【问题标题】:Java doesn't know how to multiply? What? [duplicate]Java不知道如何乘法?什么? [复制]
【发布时间】:2014-06-23 10:15:08
【问题描述】:

所以我在 java 中制作了一个 cookie 点击器克隆(我真丢脸),一方面,我需要为你拥有的每个光标增加 0.1 倍。代码如下所示(cookies 是双精度值,所有其他值都是整数):

cookies = cookies + (cursors*.1+grandmas/2+farms*4+factories*10);

但是,当它输出时,它会输出 2.3999999999999999 之类的数字,而不是 2.4。怎么回事?

【问题讨论】:

  • 尝试cursors/10.0 而不是cursors*0.1 这将减少错误。
  • 而且它与java 无关。这是所有使用 IEEE 浮点数学的语言的一般行为。因为这就是 IEEE 数学的工作原理,无论是 C/C++/Java/.net 什么。

标签: java decimal multiplication


【解决方案1】:

这是双精度。你可以使用

cookies = Math.round( cookies * 100.0 ) / 100.0;

【讨论】:

    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2014-01-30
    • 1970-01-01
    • 2012-02-20
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多