Python小数位数过多



我尝试在下面创建一个温度转换器:

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.6romer返回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位。

相关内容

  • 没有找到相关文章

最新更新