问题描述
我想将199.999转为199.99
getcontext.prec = 2不是我之后的任何一个,所有这一切都是E'的
值。
我真的必须使用浮点数来做这个吗?
i want to trunkate 199.999 to 199.99
getcontext.prec = 2 isn''t what i''m after either, all that does is E''s
the value.
do i really have to use floats to do this?
推荐答案
19.999是一个浮点数:
type(19.999)是float#==>真的
19.999 is a float :
type(19.999) is float # ==> True
round(199.999, 2) # 2 digits after the decimal point
错误。这将产生200.00。
Wrong. This will yield 200.00.
19.999是浮点数:
类型(19.999)是浮点数#==>真的
19.999 is a float :
type(19.999) is float # ==> True
他说的是小数...
d =十进制(" 199.999")
d._round(5,decimal.ROUND_DOWN)
Reinhold
He is speaking of Decimals...
d = Decimal("199.999")
d._round(5, decimal.ROUND_DOWN)
Reinhold
您可以尝试这个(从我用于手机账单的脚本):
来自十进制导入十进制为d
def roundDecimal(num,prec):
返回d(num ).quantize(d(1e%d%( - prec)))
其中`prec`是小数点后的位数。
我肯定有更好的解决方案,有人会告诉它,因此
教我们两个。 ;-)
Adia?*,Marc
You could try this (from a script I use for my phone bill):
from decimal import Decimal as d
def roundDecimal(num, prec):
return d(num).quantize(d("1e%d" % (-prec)))
where `prec` is the number of places after the decimal point.
I''m sure there is a better solutions and someone will tell it, thereby
teaching us both. ;-)
Adia?*, Marc
这篇关于十进制和主干的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!