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