當折扣為0.9634時
math.floor(1 * 20 *
0.9634* 100) / 100
// 輸出結果為 19.26,而實際上不取整的值為19.268,保留小數點後兩位向上取值應為19.27
於是改用向上取值
math.ceil(1 * 20 * 0.9634 * 100) / 100
// 輸出結果為 19.27
math.ceil(1 * 20 * 0.96 * 100) / 100
//輸出結果為19.21,而實際上我需要的值為19.2
考慮為什麼會出現19.21的原因?
記憶體中儲存float資料時,當為整數時,會在小數點後最後一位產生一位隨機數,例如float(3),儲存空間為3.000000000001,因此向上取整時會導致19.2向上進製為19.21.
於是思考整數乘以小數點後兩位數的值,還是乙個小數點後兩位數的值,於是修改公式
math.ceil(math.floor(1 * 20 * 0.9634 * 10000)/100)/100
math.ceil(math.floor(1 * 20 * 0.96 * 10000)/100)/100
使用引數_num(數量)、_price(單價)、_rate(比例)
math.ceil(math.floor(_num * _price * _rate * 10000)/100)/100
C 小數點後保留兩位小數
c 小數點後保留兩位小數,四捨五入的函式及使用方法 1 math.round 45.367,2 returns 45.37 2 math.round 45.365,2 returns 45.36c 中的round 不是我們中國人理解的四捨五入,是老外的四捨五入,是符合ieee標準的四捨五入,具體是四...
php小數點後取兩位
經常用到小數點後取幾位,但不能進製的情況。比如3.149569 取小數點後兩位,最後兩位不能四捨五入。結果應該是3.14。需要用到這個函式floor。該函式是舍去取整。如floor 4.66456 結果 4 floor 9.1254 結果9 所以要去小數點後兩位,需要先乘以100,然後舍去取整,在除...
php小數點後取兩位
一 經常用到小數點後取幾位,但不能進製的情況。比如3.149569 取小數點後兩位,最後兩位不能四捨五入。結果應該是3.14。需要用到這個函式floor。該函式是舍去取整。如floor 4.66456 結果 4 floor 9.1254 結果9 所以要去小數點後兩位,需要先乘以100,然後舍去取整,...