Mat*_*att 124 python floating-point
这是我的代码:
x = 1.0
y = 100000.0
print x/y
Run Code Online (Sandbox Code Playgroud)
我的商显示为 1.00000e-05
有没有办法压制科学记数并使其显示为
0.00001?我将把结果用作字符串.
Azi*_*lto 67
使用较新的版本''.format(还要记住在.您希望显示之后指定多少位数,这取决于浮点数的小数).看这个例子:
>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'
Run Code Online (Sandbox Code Playgroud)
如上图所示,默认为6位数!这对我们的案例没有帮助,所以我们可以使用这样的东西:
>>> '{:.20f}'.format(a)
'-0.00000000000000007186'
Run Code Online (Sandbox Code Playgroud)
从Python 3.6开始,可以使用新格式化的字符串文字简化,如下所示:
>>> f'{a:.20f}'
'-0.00000000000000007186'
Run Code Online (Sandbox Code Playgroud)
Sil*_*ost 54
'%f' % (x/y)
Run Code Online (Sandbox Code Playgroud)
但你需要自己管理精度.例如,
'%f' % (1/10**8)
Run Code Online (Sandbox Code Playgroud)
将仅显示零.
详细信息在文档中
nmi*_*els 46
使用较新版本的Python(2.6及更高版本),您可以使用它''.format()来完成@SilentGhost建议的内容:
'{0:f}'.format(x/y)
Run Code Online (Sandbox Code Playgroud)
Den*_*zov 25
上面的大多数答案都要求您指定精度。但是如果你想像这样显示浮点数,没有不必要的零怎么办:
1
0.1
0.01
0.001
0.0001
0.00001
0.000001
0.000000000001
Run Code Online (Sandbox Code Playgroud)
numpy 有一个答案: np.format_float_positional
import numpy as np
def format_float(num):
return np.format_float_positional(num, trim='-')
Run Code Online (Sandbox Code Playgroud)
Sar*_*Zeb 21
如果是 numpy 数组,您可以使用抑制命令来抑制
import numpy as np
np.set_printoptions(suppress=True)
Run Code Online (Sandbox Code Playgroud)
Jos*_*jua 13
如果您使用的是熊猫并且想抑制所有浮标的科学计数法,则另一种选择是调整熊猫选项。
import pandas as pd
pd.options.display.float_format = '{:.2f}'.format
Run Code Online (Sandbox Code Playgroud)
qwe*_*url 10
您可以使用内置format函数。
>>> a = -3.42142141234123e-15
>>> format(a, 'f')
'-0.000000'
>>> format(a, '.50f') # Or you can specify precision
'-0.00000000000000342142141234122994048466990874926279'
Run Code Online (Sandbox Code Playgroud)
这将适用于任何指数:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129250 次 |
| 最近记录: |