【发布时间】:2011-12-13 15:39:01
【问题描述】:
我正在开发一个需要对数字进行立方计算的程序。长话短说,我需要将数字与字符串进行比较,所以当我转换为字符串时,我需要去掉 double 给出的小数位。为此,我使用了Math.round 并将其保存为long。这适用于相对正常的数字,但数字可以达到 999,999。
我使用了 275393(一个给定的测试编号,所以我假设它对于我正在处理的问题必须是正确的)并且计算器和计算机似乎都没有得到正确的答案。正确答案应该在结果中的某处包含 123457,但计算器有 12346(我认为它只是四舍五入,因为它在此之后停止列出数字)并且计算机有 123456(计算机在此之后停止列出数字)。四舍五入是否会给它带来问题(它不应该是因为我很确定它只会四舍五入到十分位,但谁知道)?还是别的什么?
【问题讨论】:
-
尝试使用BigDecimal 而不是双精度。
标签: java floating-point floating-accuracy