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( String(参数1) );
BigDecimal b = new BigDecimal( String(参数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();
float型System.out.println(result);