首页 > 解决方案 > 如何避免 Python 用科学计数法打印数字?

问题描述

我知道像我这样的一些问题已经发布,但我的情况有点不同。我想避免使用科学记数法,但我遇到了一个问题:我无法格式化我的输出,{:.df}因为在运行脚本之前我不知道位数。事实上,这个输出是对输入进行计算的结果。这是有人建议我做的事情:

("{:.%df}" % number_of_digits(result[i])).format(result[i])

遗憾的是它不起作用。这是一段更大的代码,您可以很好地理解:

result = [n / 1000000**3, n / 100000**3, n / 10000**3, n / 1000**3, n / 100**3, n / 10**3, n]
for i in range(len(volume_units)):
    print(str(n) + ' ' + volume_units[choice - 1] + " = " + ("{:.%df}" % number_of_digits(result[i])).format(result[i]) + ' ' + volume_units[i])

这是number_of_digits函数的代码:

def number_of_digits(number):
    counter = 0
    while number > 0:
        number //= 10
        counter += 1
    return counter

非常感谢会回答的人!

你的输出格式是什么样的?

就像这样: 输出格式

标签: pythonformatting

解决方案


length = len(str(abs(your_number)))
format_string = '{:.' + str(length) + 'f}'
print format_string.format(your_number)

您需要针对所需的格式类型和数字变量进行调整。


推荐阅读