这是我的代码:
x = 1.0
y = 100000.0
print x/y
我的商显示为1.00000e-05。
有没有办法压制科学符号,让它显示为 0.00001 ?我将使用结果作为字符串。
这是我的代码:
x = 1.0
y = 100000.0
print x/y
我的商显示为1.00000e-05。
有没有办法压制科学符号,让它显示为 0.00001 ?我将使用结果作为字符串。
当前回答
如果它是一个字符串,那么使用内置的float对其进行转换,例如: 打印(“%。5f" %浮动("1.43572 -03")) 答案:0.00143572
其他回答
上面的大多数答案都要求您指定精度。但是如果你想像这样显示浮点数,没有不必要的零呢:
1
0.1
0.01
0.001
0.0001
0.00001
0.000001
0.000000000001
Numpy给出了答案:np.format_float_positional
import numpy as np
def format_float(num):
return np.format_float_positional(num, trim='-')
将浮点数显示为任意数量的有效数字的更简单解决方案。这里不需要numpy或列表推导式:
def sig(num, digits=3):
"Return number formatted for significant digits"
if num == 0:
return 0
negative = '-' if num < 0 else ''
num = abs(float(num))
power = math.log(num, 10)
if num < 1:
step = int(10**(-int(power) + digits) * num)
return negative + '0.' + '0' * -int(power) + str(int(step)).rstrip('0')
elif power < digits - 1:
return negative + ('{0:.' + str(digits) + 'g}').format(num)
else:
return negative + str(int(num))
在示例中,我去掉了后面的0并显示完整的整数:sig(31415.9) = 31415而不是31400。如果您不喜欢修改代码,请随意修改。
测试:
for power in range(-8,8):
num = math.pi * 10**power
print(str(num).ljust(25), sig(num))
我也遇到过类似的问题,用我的解决方案:
from decimal import Decimal
Decimal(2/25500)
#output:0.00007843137254901961000728982664753630160703323781490325927734375
在Python的新版本(2.6及更高版本)中,你可以使用" .format()来完成@SilentGhost建议的事情:
'{0:f}'.format(x/y)
如果它是一个字符串,那么使用内置的float对其进行转换,例如: 打印(“%。5f" %浮动("1.43572 -03")) 答案:0.00143572