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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xu505928168/article/details/90143856

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

先讲用分的

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

没有更多推荐了,返回首页