我在我的應用程序中做了很多浮點操作,我知道浮點操作不是100%準確的,這很好,但是當涉及到打印結果時我還沒有找到一種正確格式化的方法。JAVA浮點操作
例如
0.1 + 0.1 = 0.19999999999999999999999
Math.sin(Math.PI)=的1.2246E16代替0
和類似的東西1.000000000000000001
我正在尋找採取這些結果並獲得適當的四捨五入值的一般方法(以字符串形式)
這樣 0.1 + 0.1 = 0.19999999999999999999999 - > 0.2這一需要舍入
Math.sin(Math.PI)= 1.2246E16 - > 0
和類似的東西1.000000000000000001 - > 1;而這一個需要向下舍入
我也想避免在例如結果爲 1.1234567891234567或1.33333333333333的情況下丟失數據,結果應該保持不變。
http://floating-point-gui.de/ – BalusC
不可能。程序如何知道是否應該捨棄'0.1999999999999'(因爲它是'0.1 + 0.1'的結果)或不是(因爲它是'0.2 - 0.000000000001'的結果? – rolve
'System.out.println(0.1+ 0.1)'產生「0.2」,順帶說一句 – DNA