python如何精确四舍五入 20
fromdecimalimportDecimalasDfloat1=10.75price_t=D(float1)*D(1.1)price=float('{:.2f}'.f...
from decimal import Decimal as D
float1=10.75
price_t = D(float1) * D(1.1)
price = float('{:.2f}'.format(price_t))
price值为11.825,取小数点两位应该是11.83,为啥上面这样算出来的结果还是11.82,有什么办法能够精确得到11.83
已经使用decimal模块进行计算了,但要对结果进行四舍五入。发现仅当个别情况下,5是没法入的,会被舍掉。如round(d('0.825'),2),结果是0.82
=======================
研究了一下,已解决。*100/100即可 展开
float1=10.75
price_t = D(float1) * D(1.1)
price = float('{:.2f}'.format(price_t))
price值为11.825,取小数点两位应该是11.83,为啥上面这样算出来的结果还是11.82,有什么办法能够精确得到11.83
已经使用decimal模块进行计算了,但要对结果进行四舍五入。发现仅当个别情况下,5是没法入的,会被舍掉。如round(d('0.825'),2),结果是0.82
=======================
研究了一下,已解决。*100/100即可 展开
3个回答
展开全部
float('{:.2f}'.format(price_t))
这样只是取两位小数并没有四舍五入
四舍五入有一个专门的函数round,下面是正确的用法
round(float(price_t), 2)
这样只是取两位小数并没有四舍五入
四舍五入有一个专门的函数round,下面是正确的用法
round(float(price_t), 2)
追问
>>> round(float(11.825), 2)
11.82
追答
这是Python表示浮点数精度有限的问题,实际上计算机存储的数字可能是11.824999999999,四舍五入就变成了11.82,这是没有解决办法的
如果你希望能够准确四舍五入就多加几位有效数字吧
round(11.8250001, 2)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询