電腦是用二進位來儲存數字,把十進位的浮點數轉化成二進位可能會有精度損失,部分小數無法完全用二進位制表示。
"""
電腦是用二進位來儲存數字,把十進位的浮點數轉化成二進位可能會有精度損失,部分小數無法完全用二進位制表示。
import decimal,把 Decimal(浮點數) 的結果印出來看看。
"""
import math
from decimal import Decimal
def myRound(x, d):
mul = 1;
for i in range(d):
mul *= 10
if x >= 0:
return math.floor(x * mul + 0.5) / mul
else:
return math.ceil(x * mul - 0.5) / mul
# ======================
print(Decimal(6.005))
# 6.00499999999999989341858963598497211933135986328125
print(round(6.005, 2))
# 6.0
print(myRound(6.005, 2))
# 6.01