黑马程序员技术交流社区

标题: java中科学计算和精确计算 [打印本页]

作者: 29198102shihao    时间: 2013-7-7 09:51
标题: java中科学计算和精确计算
1科学计算:有一点误差可以接受,用浮点类型

doublea=0.6;

doubleb=0.06;

print(a+b)

结果是:0.60600000001  不精确,因为计算机只有01数值,无法精确表示!!

2精确运算:用于数量大的货币运算操作等,可以用BigDecimal类:提供了加减乘除运算

可以实现精确运算!!传入数字的字符串形式就好!

BigDecimala=new BigDecimal(“0.1”);

BigDecimalb=new BigDecimal(“0.006”);

BigDecimalc=a.add(b);  a+b

print(c.toString());

而且可以实现任意的精度运算小数点后面位数或者整数位也可以<无限长!!!无限制,实现任意精度小数

BigDecimalc=a.multiply(b);  a*b

BigDecimalc=a.divide(b);  a/b  会报错,因为无法整除,就会无限长,会出错!!应当告诉他保留的小数范围以及舍入模式:碰到一半怎么处理!!

BigDecimalc=a.divide(b,10,BigDecimal.ROUND_HALF_UP);  a/b

保留小数点后10位,碰到一半怎么处理, 遇到0.5 向上舍入是成1,向下舍入是成0   ROUND_HALF_UP


作者: 黄玉昆    时间: 2013-7-7 10:06
说到浮点数的相关计算,你可以看看这个帖子:谁偷了我的精度?浮点数浅谈
希望能让大家学到一点点知识

作者: 29198102shihao    时间: 2013-7-7 12:51
黄玉昆 发表于 2013-7-7 10:06
说到浮点数的相关计算,你可以看看这个帖子:谁偷了我的精度?浮点数浅谈
希望能让大家学到一点点知识
...

enen 好的 !多谢啦啊!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2