2014-09-11 91 views
1

我覺得我在這裏錯過了一些東西,但我並不完全確定我是什麼,而且我相對較新,所以我無法準確搜索可能是什麼造成它。Math.pi vs double and rounding via printf in java

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才能被直接四捨五入,但我認爲在我陷入困境之前知道發生了什麼很重要。

+0

Math.PI也是有限的(也是雙重的);所以拋出這個假設,然後回去。 – user2864740 2014-09-11 01:54:51

+0

得到這個數字,否則我們會把你帶到一艘帶有老虎的救生艇上。 – 2014-09-11 02:22:08

回答

4

會發生什麼是Pi不是3.145926...。它是3.1415926...。它們是不同的:

3.145926 -> 3.15 
3.1415926 -> 3.14 
    ^
+0

a-hah!我覺得自己像一個白癡,Typo + Banker's Rounding。感謝您的迴應! – Floydasaurus 2014-09-11 01:59:20

+0

沒問題,歡迎來到StackOverflow! – Christian 2014-09-11 02:01:07