首页 > 代码库 > java中的浮点数相加
java中的浮点数相加
今天遇到一个比较有意思的问题,就是两个浮点数相加怎么都得不到正确的答案,刚开始也很纳闷,后来通过在网上找资料后,明白了原来浮点数用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中的浮点数相加
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。