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

表示小數點后幾位
 
        
這樣就能解決浮點數的計算問題了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM