Incorrect subtraction results: 3.999999, not 4
本问题已经有最佳答案,请猛点这里访问。
因此,我将应用程序中的错误缩小为Java弄乱了简单的减法计算。我不知道为什么。这是代码的一部分:
1 2 3 4 5 6 7 8 9 10 11 |
变量bdl只是一个JSONArray,目前我只关心它的长度。由于bdl最初具有长度15,所以x等于1.4。第一次通过循环,第一个println会说" X = 1.4,所以count = 20 ",这是正确的。但是,第二次通过x应= 0.4时,它改为说" X = 0.3999999999999999,所以计数= 7"。我知道在那个时间点将(x * 20)转换为int会给我7,但是我的问题是为什么x不等于0.4。
您正在使用
1 | for (int x = ((bdl.length())-1)/10; x > 0; x--) { |
这将使您的数字保持准确。
实际上,您的" x"等于0.4,仅是精度问题。
所有浮点比较操作应以一定的精度(在某些实现中为δ或epsilon)执行。
请参阅此帖子。