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即可
展开
 我来答
日TimE寸
2015-08-16 · TA获得超过9568个赞
知道大有可为答主
回答量:1358
采纳率:83%
帮助的人:475万
展开全部
float('{:.2f}'.format(price_t))
这样只是取两位小数并没有四舍五入
四舍五入有一个专门的函数round,下面是正确的用法
round(float(price_t), 2)
追问
>>> round(float(11.825), 2)
11.82
追答
这是Python表示浮点数精度有限的问题,实际上计算机存储的数字可能是11.824999999999,四舍五入就变成了11.82,这是没有解决办法的
如果你希望能够准确四舍五入就多加几位有效数字吧
round(11.8250001, 2)
我是小仙鱼儿
2018-03-11
知道答主
回答量:1
采纳率:0%
帮助的人:722
展开全部
Python遵循四舍六入五成双规则
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友32f2276
2018-01-18
知道答主
回答量:1
采纳率:0%
帮助的人:907
展开全部
def s4j5(a):
a1=float(int(a*100))
tag=a*100-a1
if tag>=0.5:
return((a1+1)/100)
else:
return(a1/100)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式