我有两个浮点数作为python代码的结果。
30.00
3995.0081
我想以这样的方式格式化它们,它们总共相等。数字(例11)。例如,上面两位数将产生以下结果。
30.000000000
3995.0081000
如果你注意到,没有。在这两个小数点之后的降低是不相等的但是总数没有。降低是相同的。 我尝试使用以下方法
print('{0:11.9f}'.format(number))
但它会产生以下结果,这是错误的。
30.000000000
3995.008100000
是否有任何可以产生预期效果的方法或功能?
答案 0 :(得分:3)
我认为这仅用于显示目的,因此字符串将允许这样做。你给出的两个数据示例已经包含了小数,但我不知道是否总是如此。如果没有,那就会有一点额外的逻辑;但我认为这会让事情开始。
def sizer(input_number):
output = str(float(input_number)) + '0' * 11 # or some number in excess of the desired number of digits
output = output[0:12] # based on the example of 11 desired digits
print(output)
sizer(30.00)
sizer(3995.0081)
答案 1 :(得分:0)
https://docs.python.org/2/library/decimal.html
from decimal import *
getcontext().prec = 6
Decimal(1) / Decimal(7)
十进制(' 0.142857&#39)
getcontext().prec = 28
Decimal(1) / Decimal(7)
十进制(' 0.1428571428571428571428571429&#39)
答案 2 :(得分:0)
您可以定义适应格式化字符串的自定义打印功能:
def custom_print(n, ndig=11):
spec = '{0}.{1}f'.format(ndig, ndig -1 - len(str(n).split('.')[0]))
print(n.__format__(spec))
custom_print(a)
custom_print(b)
>>>30.00000000
>>>3995.008100
其中ndig -1 - len(str(n).split('.')[0]
是小数点后的位数。