[已解决] 5.0-4.2竟然不等于0.8怎么办?
我也知道不相等,那实际开发时候怎么避免呢?假如我有个方法经过无数次double类型计算那误差就会很大了,怎么解决呢?
我超市买东西刷卡,Java开发出来的pos机,卡里有5块钱,刷了4块2,我卡里就剩7毛多,是你你干吗?
回复
你可以使用BigDecimal类处理精确的浮点数运算。有些浮点数无法用double精确的表示。
一般实际开发中对于精度非常高要求的项目。应该使用BigDecimal类。具体的你查查文档应该就会用了。还有疑问的话欢迎跟帖!
回复
发表于 2013-1-4 19:30 [viewimg]
哥们你喝了吧呵呵?前面结果是int型?!完全不知道你说什么。。
不好意思,学的不太好
回复
发表于 2013-1-4 19:54 [viewimg]
你可以使用BigDecimal类处理精确的浮点数运算。有些浮点数无法用double精确的表示。
一般实际开发中对于精 ...
import java.math.*;
import java.text.*;
public class abc{
public static void main(String[] args) {
double a = 5.0;
double b = 4.2;
BigDecimal a1 = new BigDecimal(a);//把double转换成BigDecimal类型
BigDecimal b1 = new BigDecimal(b);
DecimalFormat df=new DecimalFormat("0.0"); //设置保存精度
System.out.println(df.format(a1.subtract(b1)));//结果为0.8
}
}
我只能说版主你太牛x了,刚才查了api文档,用BigDecimal类,结果弄出来了,非常感谢,问题已解决!
回复
刚才查文档的过程就是个很好的学习过程。希望继续保持哦。
有时候给你一个思路比直接给你答案会更好。。你说呢