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

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

先讲用分的

数据库的数据类型用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]  \\这个是因为.是转义字符

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