5.0-4.2竟然不等于0.8怎么办

 

[已解决] 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类,结果弄出来了,非常感谢,问题已解决!

回复 

 刚才查文档的过程就是个很好的学习过程。希望继续保持哦。

有时候给你一个思路比直接给你答案会更好。。你说呢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值