解决浮点类型在商业运算中的精度丢失问题

解决浮点类型在商业运算中的精度丢失问题

导言:money一直是一个敏感的话题,商业运算中money的计算显得有为重要,我们知道在java中浮点类型float,double在运算中会出现精度丢失的问题

场景:例如某用户有10块钱,买了一件商品花了8.8,理应剩下1.2元。但却无法继续购买价格为1.2元的商品,这就出现了1.2+8.8不等于10的现象,用户就会觉得特别不合理,明明是10块的东西而十块钱却买不到。这就是浮点数在商业运算中出现精度丢失所带来的严重问题。

针对以上问题笔者认为有两种解决方案:

第一种:

在设计数据库表的时候可以将price字段类型设置为int(oracle应设置为number)类型,而在实体中对应的属性单位应该表示为分(即精确到0.00)或者角(即0.0),但一般情况下money会精确到分。这里只是说明这个问题的解决思想

例如:

在商品实体类中:

public class item{

private String id;

private String name;

private int price;

....

//get,set方法...

}

如果商品的价格为12.53元(精确到分)

在数据库中price字段对应的数据为应该为1253

使用这种方法需要编程人员自己在程序中收懂转换&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值