1. 程式人生 > 其它 >浮點數計算不精確問題

浮點數計算不精確問題

用浮點數計算髮現一個現象

出現這樣的原因的理由是

因為不論是float 還是double都是浮點數,而計算機是二進位制的,浮點數會失去一定的精確度。

注:根本原因是:十進位制值通常沒有完全相同的二進位制表示形式;十進位制數的二進位制表示形式可能不精確。只能無限接近於那個值.(引用自csdn作者:這輩子_安靜的努力著)

如何解決這樣的問題呢?

使用BigDecimal

1、簡介
Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數進行精確的運算。雙精度浮點型變數double可以處理16位有效數。在實際應用中,需要對更大或者更小的數進行運算和處理。float和double只能用來做科學計算或者是工程計算,在商業計算中要用java.math.BigDecimal。BigDecimal所建立的是物件,我們不能使用傳統的+、-、*、/等算術運算子直接對其物件進行數學運算,而必須呼叫其相對應的方法。方法中的引數也必須是BigDecimal的物件。構造器是類的特殊方法,專門用來建立物件,特別是帶有引數的物件。


————————————————
版權宣告:本文為CSDN博主「這輩子_安靜的努力著」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

1、簡介
Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數進行精確的運算。雙精度浮點型變數double可以處理16位有效數。在實際應用中,需要對更大或者更小的數進行運算和處理。float和double只能用來做科學計算或者是工程計算,在商業計算中要用java.math.BigDecimal。BigDecimal所建立的是物件,我們不能使用傳統的+、-、*、/等算術運算子直接對其物件進行數學運算,而必須呼叫其相對應的方法。方法中的引數也必須是BigDecimal的物件。構造器是類的特殊方法,專門用來建立物件,特別是帶有引數的物件。


————————————————
版權宣告:本文為CSDN博主「這輩子_安靜的努力著」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_35868412/article/details/89029288