JAVA的知识点3——浮点数的相关处理
生活随笔
收集整理的這篇文章主要介紹了
JAVA的知识点3——浮点数的相关处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
浮點類型float,double的數據不適合在不容許舍入誤差的金融計算領域。如果需要進行不產生舍入誤差的精確數字計算,需要使用BigDecimal類。
因為由于字長有限,浮點數能夠精確表示的數是有限的,因而也是離散的。
浮點數一般都存在舍入誤差,很多數字無法精確表示(例如0.1),其結果只能是接近, 但不等于。
二進制浮點數不能精確的表示0.1、0.01、0.001這樣10的負次冪。
并不是所有的小數都能可以精確的用二進制浮點數表示。
注:不要使用浮點數進行比較!需要比較請使用BigDecimal類
?java.math包下面的兩個有用的類:BigInteger和BigDecimal,這兩個類可以處理任意長度的數值。BigInteger實現了任意精度的整數運算。BigDecimal實現了任意精度的浮點運算。
import java.math.BigDecimal;public class test1 {public static void main(String[] args) {/*浮點數的比較一float f=0.1f;double d=1.0/10;System.out.println(f==d);*//*浮點數的比較二float d1=4254155545f;float d2=d1+1;if(d1==d2) {System.out.println("d1=d2");}else {System.out.println("d1 != d2");}*/BigDecimal bd=BigDecimal.valueOf(1.0);bd=bd.subtract(BigDecimal.valueOf(0.1));bd=bd.subtract(BigDecimal.valueOf(0.1));bd=bd.subtract(BigDecimal.valueOf(0.1));bd=bd.subtract(BigDecimal.valueOf(0.1));bd=bd.subtract(BigDecimal.valueOf(0.1));System.out.println(bd);System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);} }?
程序運行結果如下圖:
浮點數使用總結
-
默認是double類型
-
浮點數存在舍入誤差,數字不能精確表示。如果需要進行不產生舍入誤差的精確數字計算,需要使用BigDecimal類。
-
避免比較中使用浮點數,需要比較請使用BigDecimal類
總結
以上是生活随笔為你收集整理的JAVA的知识点3——浮点数的相关处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA的知识点2
- 下一篇: JAVA的知识点4——字符型变量/常量