Math.pi vs通过java中的printf进行双倍和舍入

时间:2014-09-11 01:53:08

标签: java rounding-error

我觉得我在这里遗漏了一些东西,但我不完全确定是什么,而且我比较新,所以我很难找到可能导致它的原因。

java片段如下:

double testDoublePi = 3.145926
System.out.printf("This one rounds: %.2f\tBut this does not: %.2f", testDoublePi, Math.PI );
  

“这一轮:3.15但这不是:3.14”

我希望两者都能检查千分之一的数字并相应地舍入,但事实并非如此。

我有一种潜在的怀疑,它与testDoublePi有限而且与Math.PI有关,但我不确定。我没有一个特殊的实际应用程序需要PI随意舍入,但我认为在我遇到麻烦之后知道发生了什么并且后来感到沮丧是很重要的。

1 个答案:

答案 0 :(得分:4)

Pi 不是3.145926...会发生什么。它是3.1415926...。他们是不同的:

3.145926  -> 3.15
3.1415926 -> 3.14
    ^