JAVA中float、double、BigDecimal的区别
来源:互联网 发布:宣城太守知不知 编辑:程序博客网 时间:2024/06/05 11:26
单精度浮点数(float)与双精度浮点数(double)的区别如下:
(1)在内存中占有的字节数不同
单精度浮点数在机内占4个字节
双精度浮点数在机内占8个字节
(2)有效数字位数不同
单精度浮点数有效数字8位
双精度浮点数有效数字16位
(3)所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38(10的-38次方到10的38次方)
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308(10的-308次方到10的308次方)
(4)在程序中处理速度不同
(1)在内存中占有的字节数不同
单精度浮点数在机内占4个字节
双精度浮点数在机内占8个字节
(2)有效数字位数不同
单精度浮点数有效数字8位
双精度浮点数有效数字16位
(3)所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38(10的-38次方到10的38次方)
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308(10的-308次方到10的308次方)
(4)在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
例如:float a=1.3;
则会提示不能将double转化成float 这成为窄型转化
如果要用float来修饰的话,则应该使用float a=1.3f
注意float是8位有效数字,第7位数字将会产生四舍五入
所以如果一个float变量 这样定义: float a=1.32344435; 则第7位将产生四舍五入(5及5以下的都将舍去)
请看题:
问, 结果是多少? 0.01?
No! 结果是0.009999999999999998!
为什么会这样呢? 因为float和double都是浮点数, 都有取值范围, 都有精度范围. 浮点数与通常使用的小数不同, 使用中, 往往难以确定. 常见的问题是定义了一个浮点数, 经过一系列的计算, 它本来应该等于某个确定值, 但实际上并不是!double相减会转换成二进制,因double有效位数为 16位这就会出现存储小数位数不够的情况,这种情况下就会出现误差,解决方法就是使用BigDecimal,它的有效长度足够长可存储 小数位数因此可代替double来进行加减乘除, 金额必须是完全精确的计算, 故不能使用double或者float, 而应该采用java.math.BigDecimal阅读全文
1 0
- JAVA中float、double、BigDecimal的区别
- Float、double和Bigdecimal的区别
- java中float,double利用BigDecimal运算
- java中float,double利用BigDecimal运算
- Java中double和float的区别
- JAVA中float与double的区别
- Java 中 float 与 double 的区别
- JAVA中float与double的区别
- java中float和double的区别
- Java 中 float 与 double 的区别
- java中float 和double的区别
- JAVA中float与double的区别
- java float 和 double 的 bug 和解决办法BigDecimal
- java中double和float区别
- java double float 区别
- java的float和double的区别
- c#中decimal ,double,float的区别
- c#中decimal ,double,float的区别
- [C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护)
- 轮播图
- eclipse 创建maven项目
- Mongo常用操作汇总
- Linux下实现Post方式
- JAVA中float、double、BigDecimal的区别
- 机器学习(一)——K-Means算法分析
- MFC、WTL、WPF、wxWidgets、Qt、GTK、Cocoa、VCL 各有什么特点?
- 数据库设计中的英文术语表
- 将绿色版的tomcat注册成系统服务
- 使用FindBugs-IDEA插件找到代码中潜在的问题
- stm32 SPI学习
- 如何按国家标准分幅下载卫星地图
- 简要分析java的类,抽象类和接口的联系和区别