如何在Python 3中将-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,这里没有

在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
,这里没有浮点值。@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)