[巨蟒3.1]
I'm following up on this answer:
class prettyfloat(float):
def __repr__(self):
return "%0.2f" % self
我知道我需要跟踪我的浮动文本(例如,用
3.0
替换prettyfloat(3.0)
,等等),这很好。但每当我进行任何计算时,
prettyfloat
对象都会转换为float
。?
编辑:
。。
我不能使用
float
全局设置,因为我希望计算达到全精度(只打印2个小数点)。@。但这是一个没有意义的观点,因为有以下几点。
@。
。。
谢谢您!
最佳答案
我看了一下你的回答,我认为你混淆了数据及其表示。
@
# Perform all our computations using standard floats.
results = compute_huge_numbers(42)
# Switch to prettyfloats for printing.
print(map(prettyfloat, results))
换句话说,您不应该(也不应该)在代码中的任何地方使用
float
替换floats
。当然,继承
prettyfloats
来解决这个问题是过分的,因为这是一个表示问题,而不是数据问题。一个简单的函数就足够了:def prettyfloat(number):
return "%0.2f" % number # Works the same.
现在,如果它毕竟不是关于表示的,而您实际上想要实现的是在代码中的任何地方都限制在小数点后两位的定点计算,那就完全map()。