小數點後兩位向上取值

2021-09-26 07:31:09 字數 832 閱讀 8504

當折扣為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,然後舍去取整,...