计算浮点数的精确结果
2015-12-16 16:52
323 查看
运行:
结果:
原因:
目前常用的float和double等浮点数是基于IEEE-754的二进制有限小数。一个有理数,除非分母是足够小的2的整数次幂,否则它就不能被精确表示。因此,有些十进制有限位数的小数,到二进制里面可能会变成无限循环小数,在浮点数中不能表示而损失精度。
解决办法:
引入java.math.BigDecimal类
并且调用构造方法是时,尽量用int或者String类型
public class DoubleOperation { public static void main(String args[]){ System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100); } }
结果:
原因:
目前常用的float和double等浮点数是基于IEEE-754的二进制有限小数。一个有理数,除非分母是足够小的2的整数次幂,否则它就不能被精确表示。因此,有些十进制有限位数的小数,到二进制里面可能会变成无限循环小数,在浮点数中不能表示而损失精度。
解决办法:
引入java.math.BigDecimal类
并且调用构造方法是时,尽量用int或者String类型
相关文章推荐
- 精度丢失引发的错误--笔记
- 0.1 + 0.2 !== 0.3 就是要说清楚因为个啥?
- 找零时刻---浮点数计算
- php中浮点数计算问题
- JavaScript解决浮点数计算不准确问题的方法分析
- ECTOUCH广告图片轮播间隔调整 ECTOUCH教程
- [leetcode]Minimum Path Sum
- xml----读取所有的根节点
- Linux操作系统实时性
- Androidstudio每次生成APK自增版本号、自动命名
- 谈谈分工
- XP系统消除“WINDOWS副本未通过正版WINDOW验证”警告的设置教程
- SVG
- 关于Android打造一款适用所有view的刷新和加载
- hive编程指南--hive基础知识
- 浏览器 -- history对象
- 【LEETCODE】27-Remove Element
- 树莓派驱动DHT11模块
- Elasticsearch2.1.0安装中文分词插件ik1.6
- iOS中runtime的使用总结