如何在Python 3中将-0.00转换为0.00
在Python 3.4中如何将-0.00转换为0.00?下面是一个例子如何在Python 3中将-0.00转换为0.00,python,python-3.x,decimal,Python,Python 3.x,Decimal,在Python 3.4中如何将-0.00转换为0.00?下面是一个例子 a = Decimal(-0.00001) a.quantize(Decimal('.01'),rounding=ROUND_HALF_UP) Output: Decimal('-0.00') 理想情况下,我希望使用0.00尝试使用math.fabs()函数获取数字的绝对值: 例如: 这假设a将舍入到“精确”零,而不是明显的非零值。量化后的值精确为零。还有and和and,或者只有内置值。不需要在这里导入math,这里没有
a = Decimal(-0.00001)
a.quantize(Decimal('.01'),rounding=ROUND_HALF_UP)
Output: Decimal('-0.00')
理想情况下,我希望使用0.00尝试使用
math.fabs()
函数获取数字的绝对值:
例如:
这假设
a
将舍入到“精确”零,而不是明显的非零值。量化后的值精确为零。还有and和and,或者只有内置值。不需要在这里导入math
,这里没有浮点值。@AnttiHaapala我的意思是,如果a
舍入到,比如说,-0.03
,你不想将a
设置为0.03
。这是一个好的观点。如果(abs(a)=0)Decimal('-0.00')等于零,但只有负号,我会使用abs(a)或a.copy_abs()
(对于-0.00
,两者之间没有区别)。有办法避免abs开销吗?如果我在循环一个大的数据集,如果不需要的话,我宁愿不要对每个项目都进行abs@Dowwie:如果abs
开销正在消耗您的成本,您可以在循环之前创建一个Decimal('0.00')
对象,并使用该值替换找到的所有零(负或正)。有点像CPython对小整数的优化。所以:如果a==0:a=my_special_zero
,或者仅仅a=a或my_special_zero
,有符号的零可以从下溢的计算中产生。他们保留了如果计算精度更高可能会产生的符号。因为它们的大小为零,所以正零和负零都被视为相等,并且它们的符号是信息性的。为什么要让它0.00
?我将把该值作为字符串向上游传递,最终将在gui中显示。我不希望用户看到-0.00。那么Antii的方法是你最好的选择。
math.fabs(a)
a = Decimal(-0.00001)
a = a.quantize(Decimal('.01'),rounding=ROUND_HALF_UP)
if a == 0:
a = abs(a)