首页 > 其他 > 详细

浮点数计算时损失精度

时间:2020-04-24 18:34:14      阅读:92      评论:0      收藏:0      [点我收藏+]
1 /*
2 浮点数在Java中是以二进制表示的,这样的话就有很多数不能准确表示
3 有的表示的是一个近似的数
4 例如floa型的0.1,用二进制表示是001111011 10011001100110011001101
5 化为十进制是0.100000001490116119384765625
6 因此在一些精密的计算中不能用浮点型直接相加
7 需要借用BigDecimal类
8 */

 技术分享图片浮点数直接相加:

1 public class BigDecimal1 {
2     public static void main(String[] args) {
3         System.out.println(0.01+0.09);
4     }
5 
6 }
7 
8 0.09999999999999999

BigDecimal类的成员方法的使用:

 1 public class BigDecimal1 {
 2     public static void main(String[] args) {
 3         //创建BigDecimal
 4         BigDecimal bd1=new BigDecimal("0.01");
 5         BigDecimal bd2=new BigDecimal("0.09");
 6         System.out.println("相加的结果为:"+bd1.add(bd2));
 7         System.out.println("相减的结果为:"+bd1.subtract(bd2));
 8         System.out.println("相乘的结果为:"+bd1.multiply(bd2));
 9         System.out.println("相除的结果为:"+bd2.divide(bd1));
10         System.out.println("保留5位小数后相除的结果为:"+bd1.divide(bd2,5, BigDecimal.ROUND_HALF_UP));
11     }
12 
13 }
14 
15 
16 相加的结果为:0.10
17 相减的结果为:-0.08
18 相乘的结果为:0.0009
19 相除的结果为:9
20 保留位数后相除的结果为:0.11111

 

浮点数计算时损失精度

原文:https://www.cnblogs.com/zhang-sw/p/12768435.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!