【筆記】Python 浮點數的四捨五入

電腦是用二進位來儲存數字,把十進位的浮點數轉化成二進位可能會有精度損失,部分小數無法完全用二進位制表示。

"""
電腦是用二進位來儲存數字,把十進位的浮點數轉化成二進位可能會有精度損失,部分小數無法完全用二進位制表示。

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
分享本文 Share with friends