Python十进制舍入

bad*_*nts 6 python decimal

意见#18,在20个有争议的编程意见中

让我思考.所以我尝试将pi的值打印到5位小数.

没关系,因为我认为我绝对可以用Python快速完成.在Google上几秒钟我就知道了PythonDecimal模块.我完成了.休息是基本逻辑,任何人都可以拿出来总结系列以获得Pi的价值.

>>>from decimal import *
>>>getcontext().prec = 6
>>>Decimal(22)/Decimal(7)
Run Code Online (Sandbox Code Playgroud)

我写了上面的快速脚本只是为了检查我会得到什么.

但这就是事情,getcontext().prec = 6给了我一个圆润的价值!

>>>3.14286
Run Code Online (Sandbox Code Playgroud)

确切地说.

我想知道如何确保小数点后的第N个位置没有四舍五入?我的意思是,我希望答案是3.14285

Edu*_*rdo 10

就像使用Decimal上下文指定精度一样,您也可以指定舍入规则.

from decimal import *

getcontext().prec = 6 
getcontext().rounding = ROUND_FLOOR

print Decimal(22)/Decimal(7)
Run Code Online (Sandbox Code Playgroud)

结果将是

3.14285
Run Code Online (Sandbox Code Playgroud)

http://docs.python.org/release/3.1.5/library/decimal.html#decimal.Context

  • 如果你只想改变这部分代码的上下文,那么`with localcontext()为ctx:ctx.prec = 6; ctx.rounding = ROUND_FLOOR; print十进制(22)/十进制(7)`可能会有所帮助. (3认同)