我尝试在下面创建一个温度转换器:
from decimal import *
getcontext().prec = 10
celsius = Decimal(12)
fahrenheit = celsius*9/5+32
kelvin = celsius+Decimal(273.15)
romer = celsius*21/40+Decimal(7.5)
当转换为字符串时,fahrenheit
返回53.6
,romer
返回13.8
,两者都没有额外的小数位数。但是,kelvin
返回285.1500000
。(这甚至不是285.1500001
(。如何确保它只返回足够的位置,即285.15
?我认为添加浮动小数不是问题,因为romer
可以。
做简单的
from decimal import *
getcontext().prec = 10
celsius = Decimal(12)
fahrenheit = celsius*9/5+32
kelvin = round(celsius+Decimal(273.15), 2) #if you need more then 2 digit replace 2 with other number
romer = celsius*21/40+Decimal(7.5)
为了简单起见,您可以使用内置的round()
函数。它包含两个参数,即需要取整的数字和要取整的小数位数。
kelvin = round(celsius+Decimal(273.15), 2)
此处285.1500000
将四舍五入到小数点后2位285.15
。其他方法如str.format()
、trunc()
、round_up()
等也可用。
您可能可以使用str.format()
。例如:
formatted_kelvin = "{:.2f}". format(kelvin)
所以,如果你打印这个,它只会打印小数点后2位。