这是参考此问题中的评论:
Java 中的这段代码生成 12.100000000000001,这是使用 64 位双精度数,可以精确地呈现 12.1。– 热解
这是真的?我觉得由于浮点数表示为 2 的幂的和,所以无论你有多少位,你都不能准确地表示 12.1。但是,当我实现了这两种算法并打印了使用具有许多有效数字的 (12.1, 3) 调用它们的结果时,我分别得到了他和我的结果:
12.10000000000000000000000000000000000000000000000000000000000000000000000000 12.10000000000000100000000000000000000000000000000000000000000000000000000000
我使用String.format("%76f")
. 我知道这比必要的零多,但我在 12.1 中看不到任何舍入。