簡體   English   中英

添加浮點值,結果異常

[英]Adding floating-point values, result unexpected

我想添加兩個巨大的浮點值,但得到的結果有點偏離。 讓我用一個例子來解釋:

String bi = "32323222.02";
float spend=0.00f;
spend = (Float.parseFloat(bi));

String si = "23232322.32";
float spend1=0.00f;
spend1 = (Float.parseFloat(si));

float spendSum=0.00f;
spendSum= spend+spend1;

System.out.println(spendSum);

現在的結果是5.5555544E7而我想要一個像55555544.34的答案。 關於我可能在一個示例中做錯了什么的任何建議都將有所幫助。

spend1 = (Float.parseFloat(bi));

您可能想在此處解析si 這說明了您得到的結果:程序將32323222.02添加到32323222.02

浮點數不精確。 這是因為在任何范圍內都有無限數量的有理數,但是只有有限數量的位來表示它們。

如果要精確,則應使用BigDecimal

有關浮點問題的更多信息,可以在這篇[有點復雜]的文章中找到: 每位計算機科學家都應了解的有關浮點算法的知識

編輯 :感謝@ComplicatedSeeBio的評論,我沒有發現結果差強人意。 他的答案提到了為什么差異要減少20%。 但是,即使沒有“編程錯誤”,由於浮點問題,您仍將無法獲得預期的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM