码迷,mamicode.com
首页 > 编程语言 > 详细

java中的浮点数相加

时间:2017-03-23 03:22:35      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:网上   mat   double   问题   误差   意思   gen   imp   control   

      今天遇到一个比较有意思的问题,就是两个浮点数相加怎么都得不到正确的答案,刚开始也很纳闷,后来通过在网上找资料后,明白了原来浮点数用2进制进行加减的话确实是会出现这种情况的,也找到了解决办法,所以记录下来,也算是一个比较有意思的认识吧!

       首先我们来看看两个带小数的浮点数相加会是什么样子的

package com.controller;

public class Test {
	public static void main(String[] args) {
	// TODO Auto-generated method stub
        double a = 418.48d;
        double b = 7121.88d;
        double c = a+b;
        System.out.println(c);
	}
}

 输出结果为

7540.360000000001

 原因是浮点数的二进制相计算的时候会有一定的误差,原因我们下次再深入探讨,下面我们来看解决办法

package com.controller;

import java.math.BigDecimal;

public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        double a = 418.48d;
        double b = 7121.88d;
        BigDecimal a1 = new BigDecimal(String.valueOf(a));
        BigDecimal b1 = new BigDecimal(String.valueOf(b));
        BigDecimal c = a1.add(b1);
        System.out.println(c.doubleValue());
	}
}

 输出结果为

7540.36

  

 

java中的浮点数相加

标签:网上   mat   double   问题   误差   意思   gen   imp   control   

原文地址:http://www.cnblogs.com/dbqjava/p/6603103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!