我正在向控制台输出十进制类型。我不想显示整个十进制数,只要用户拥有他们需要的数据就足够了。
问题是相关的显示精度会因程序而有很大差异。我不知道过去十进制显示的距离。
此...
916.950000000000045474735088646411895751953125
...包含程序所需的精度,但用户完全没有必要查看。
相反,我希望用户看到这个:
916.95
但我可以很容易地拥有这个:
916.95000350000000045474735088646411895751953125
用户需要看到这个:
916.9500035
如果在显示之前将Decimal类型转换为float,我将获得必要的显示精度。但这会增加处理器时间。
答案 0 :(得分:2)
您可以使用所需的精度打印您的号码:
print '%.2f' % value
此外,如果您想在打印前对数字进行舍入:
round (value, 2)
在这两个示例中,您可以将“2”设置为另一个数字,指定所需的精度。
如果你不知道你想要的精度,你可以使用它,设置要在小数部分打印的最大数字:
def print_dec(number, max) :
integer = int(number)
decimal = str(number-integer)[2:]
#Truncate the decimal part to max
decimal = decimal[:max]
#Remove '0'
for c in reversed(decimal) :
if c == '0' :
decimal = decimal[:-1]
else :
break;
# Reconstruct the number for printing
print ("{}.{}".format(integer, decimal))
这样,您将拥有:
a = 916.95030000
print_dec (a, 1)
print_dec (a, 2)
print_dec (a, 5)
print_dec (a, 6)
>> 916.9
>> 916.95
>> 916.9503
>> 916.9503