这是我的代码:
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 ?我将使用结果作为字符串。
当前回答
上面的大多数答案都要求您指定精度。但是如果你想像这样显示浮点数,没有不必要的零呢:
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='-')
其他回答
这对任何指数都适用:
def getExpandedScientificNotation(flt):
str_vals = str(flt).split('e')
coef = float(str_vals[0])
exp = int(str_vals[1])
return_val = ''
if int(exp) > 0:
return_val += str(coef).replace('.', '')
return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))])
elif int(exp) < 0:
return_val += '0.'
return_val += ''.join(['0' for _ in range(0, abs(exp) - 1)])
return_val += str(coef).replace('.', '')
return return_val
使用3.6.4时,我遇到了一个类似的问题,当使用这个时,输出文件中的一个数字将被科学符号格式化:
fout.write('someFloats: {0:0.8},{1:0.8},{2:0.8}'.format(someFloat[0], someFloat[1], someFloat[2]))
我所要做的就是添加'f'来修复它:
fout.write('someFloats: {0:0.8f},{1:0.8f},{2:0.8f}'.format(someFloat[0], someFloat[1], someFloat[2]))
'%f' % (x/y)
但你自己也需要控制精度。例如,
'%f' % (1/10**8)
将只显示0。 细节在文档中
或者对于python3,使用等效的旧格式或新样式格式
除了SG的答案,你还可以使用Decimal模块:
from decimal import Decimal
x = str(Decimal(1) / Decimal(10000))
# x is a string '0.0001'
我也遇到过类似的问题,用我的解决方案:
from decimal import Decimal
Decimal(2/25500)
#output:0.00007843137254901961000728982664753630160703323781490325927734375