数据库中的金额使用何种数据类型,后端如何对接。(用元和分都可以)

首先第一个纠结的问题就是单位的问题。是用分还是用元。用分的话就可以避免小数的问题。

先讲用分的

数据库的数据类型用int   后端也用int 就可以。比较容易。在微信支付那块传金额也是分为单位。

缺点

 1.用户当然是希望看到元的单位,看到分那么多零用户估计也会抓狂吧。

2.数据处理的时候容易忘记换算单位

 


用元

数据库的数据类型要用decimal(10,2)  后面的有效数可以自己修改  后端用BigDecimal。

double 和float不精确。因为计算机是二进制的。比如3+1=4.00000000001(我随便举的例子)

用BigDecimal需要注意,最好用string类型来创建new BigDecimal("1");

在微信支付就需要注意转换为分。

我的方法是

BigDecimal  conversion= BigDecimal.valueOf(100);
		total_fee=total_fee.multiply(conversion);
		String fee=total_fee.toString();
		data.put("total_fee",  fee.split("\\.")[0]);//获取非小数部分

乘100后把后面的小数部分去掉

fee.split("\\.")[0]  \\这个是因为.是转义字符
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值