Java數據類型中 int,double,float 的計算以及精度處理


Java數據類型中 int,double,float 的計算以及精度處理

一、float和double型的精度處理

float和double的精度是由尾數的位數決定的。

浮點數在內存中是按科學計數法來存儲的,其整數部分始終是一個隱含着的“1”,由於它是不變的,故不能對精度造成影響。

(8.25用十進制的科學計數法表示為:8.2510E0,用二進制表示可表示為1000.01,用二進制科學計數法表示為:1.00012E3

120.5用十進制的科學計數法表示為:1.20510E2,用二進制表示為:1110110.1,用二進制科學計數法表示為:2.11011012E6

可見任何一個數都的科學計數法表示都為1.xxx*2En, 尾數部分就表示為xxxx)

float:2^23 = 8388608,共七位,意味着最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。

二、用BigDemical來處理

首先導入: import java.math.BigDecimal;

語法構造:BigDecimal a = new BigDecimal( Double.toString(參數1) );

BigDecimal b = new BigDecimal( Double.toString(參數2) );

輸出語句:

​ 1、直接輸出: System.out.println(a.multiply(b));

​ 2、指定數據類型輸出:

​ int型: int result = a.multiply(b).intValue();

System.out.println(result);

​ float型: float result = a.multiply(b).floatValue();

System.out.println(result);

​ double型: double result = a.multiply(b).doubleValue();

System.out.println(result);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM