mysql中涉及到钱的字段如何设计

1、我之前使用过的方法:用int型,精确到分,保存进去,显示的时候,再缩小100倍即可;

2、用decimal(10,2)类型,这个意思,你总共可以有10个小数位数,2表示你可以保存小数点后两位;

但是注意一点,你使用decimal之后,在PHP的浮点数相加时,是不准确的,一定要注意,这是解释型语言的通病,例如

$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);

打印出来的值居然为 boolean false

这是为什么呢?

根据PHP手册来说,这就是会丢失进度,所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。

正确比较方式如下:

$a = 0.1;
$b = 0.7;
var_dump(bcadd($a,$b,2) == 0.8);  //true
var_dump(bcadd($a,$b,1) == 0.8); //true

表示小数点后几位
 
这样就能解决浮点数的计算问题了

猜你喜欢

转载自www.cnblogs.com/quepq/p/9446618.html