我正在使用ceil()函數將浮點計算的結果四捨五入到最接近的整數。不同的輸入種種都經歷過......ceil()函數不返回期望值
int(ceil(A*B))
這裏有一些例子來說明這個問題:
int(ceil(1.01*100)) = 101
int(ceil(1.02*100)) = 102
int(ceil(1.03*100)) = 103
int(ceil(1.04*100)) = 104
int(ceil(1.05*100)) = 105
int(ceil(1.06*100)) = 106
int(ceil(1.07*100)) = 107
int(ceil(1.08*100)) = 108
int(ceil(1.09*100)) = 110 ***
int(ceil(1.10*100)) = 111 ***
int(ceil(1.11*100)) = 112 ***
int(ceil(1.12*100)) = 113 ***
int(ceil(1.13*100)) = 113
我意識到這是與浮點運算做正...
執行1.09*100 = 109.000000.... > 109
我不知道如何捕獲這個bug可靠
雖然我有一對夫婦的「粗」的方法,如一個概述如下,我不認爲這是一個足夠強大的解決方案
int(ceil((1.09*100)-0.00000001)) = 109
根據數字來自哪裏,您可能需要查看['Decimal'](https://docs.python.org/2/library/decimal.html)模塊。只要輸入'1.09'已經是'1.0900000000000001' – mhlester