[英]Floating point calculation error in Java
幫幫我,在加上負數的雙精度值時遇到問題
一個顯示問題的示例程序:
double newX = 850.0;
double delta = -1.6994427191177073E12;
double total = delta + newX;
System.out.println("newX:" + newX);
System.out.println("delta:" + delta);
System.out.println("total:" + total);
但是給定的輸出是:
newX:850.0
delta:-1.6994427191177073E12
total:-1.6994427182677073E12
我希望總價值約為“ 848.30055729”。 如何處理此計算?
問候,
丹尼斯
計算正確。
讓我們從科學計數法轉換您的數字開始
-1.6994427191177073E12
到十進制定點表示法:
-1699442719117.7073
這是因為E12
表示E
左邊的數字乘以10 12 。
一旦執行了該數字和850.0
,就可以得到結果
-1699442718267.7073
通過將小數點一直移到最左側將其轉換為科學計數法后,程序將輸出結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.