这是我的代码:
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 ?我将使用结果作为字符串。
当前回答
由于这是谷歌上的顶部结果,我将在这里发布失败后,为我的问题找到一个解决方案。如果你想格式化一个浮点对象的显示值,并让它保持一个浮点,而不是一个字符串,你可以使用这个解决方案:
创建一个新类,用于修改浮点值的显示方式。
from builtins import float
class FormattedFloat(float):
def __str__(self):
return "{:.10f}".format(self).rstrip('0')
您可以通过更改{:f}中的整数值来自己修改精度。
其他回答
从3.6开始(可能适用于稍微老一点的3。X也是),这是我的解决方案:
import locale
locale.setlocale(locale.LC_ALL, '')
def number_format(n, dec_precision=4):
precision = len(str(round(n))) + dec_precision
return format(float(n), f'.{precision}n')
精度计算的目的是确保我们有足够的精度来避免科学计数法(默认精度仍然是6)。
dec_precision参数增加了用于小数点的额外精度。由于这使用了n格式,因此不会添加无关紧要的零(与f格式不同)。N还将负责呈现不带小数的整数。
N确实需要浮点数输入,因此需要强制转换。
如果它是一个字符串,那么使用内置的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='-')
使用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]))
由于这是谷歌上的顶部结果,我将在这里发布失败后,为我的问题找到一个解决方案。如果你想格式化一个浮点对象的显示值,并让它保持一个浮点,而不是一个字符串,你可以使用这个解决方案:
创建一个新类,用于修改浮点值的显示方式。
from builtins import float
class FormattedFloat(float):
def __str__(self):
return "{:.10f}".format(self).rstrip('0')
您可以通过更改{:f}中的整数值来自己修改精度。