格式化十进制类型以便于使用控制台显示?

时间:2017-01-11 08:53:28

标签: python python-3.x formatting

我正在向控制台输出十进制类型。我不想显示整个十进制数,只要用户拥有他们需要的数据就足够了。

问题是相关的显示精度会因程序而有很大差异。我不知道过去十进制显示的距离。

此...

916.950000000000045474735088646411895751953125

...包含程序所需的精度,但用户完全没有必要查看。

相反,我希望用户看到这个:

916.95

但我可以很容易地拥有这个:

916.95000350000000045474735088646411895751953125

用户需要看到这个:

916.9500035

如果在显示之前将Decimal类型转换为float,我将获得必要的显示精度。但这会增加处理器时间。

1 个答案:

答案 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