防止f字符串将float转为科学计数法
Prevent f string from converting float into scientific notation
我对 python 3.7.2 中 f-strings 的这种默认行为感到震惊:
>> number = 0.0000001
>> string = f"Number: {number}"
>> print(string)
Number: 1e-07
我的预期是:Number: 0.0000001
这非常烦人,尤其是在创建文件名时。
如何禁用这种自动转换为科学记数法的功能?为什么首先启用它?
基本上与此相反question。
编辑: 我想避免通过 {number:.8f}
为浮点数设置固定长度,因为我的数字有不同的长度,我不想有任何尾随零。我想使用 f-strings 自动生成文件名,如下所示:
filename = f"number_{number:.10f}_other_number_{other_number:.10f}.json"
我正在寻找一个简单的修饰符,它可以禁用自动科学记数法,同时保持浮点数的原始精度。
https://docs.python.org/3.4/library/string.html#format-specification-mini-language
>>> number = 0.0000001
>>> f"Number: {number}"
'Number: 1e-07'
>>> f"Number: {number:f}"
'Number: 0.000000'
>>> f"Number: {number:.10f}"
'Number: 0.0000001000'
默认情况下 :f
的精度为 6。您可以将其更改为例如10 :.10f
numpy.format_float_positional 在这里工作得很好:
import numpy as np
number = 0.0000001
string = f"Number: {np.format_float_positional(number)}"
我对 python 3.7.2 中 f-strings 的这种默认行为感到震惊:
>> number = 0.0000001
>> string = f"Number: {number}"
>> print(string)
Number: 1e-07
我的预期是:Number: 0.0000001
这非常烦人,尤其是在创建文件名时。 如何禁用这种自动转换为科学记数法的功能?为什么首先启用它?
基本上与此相反question。
编辑: 我想避免通过 {number:.8f}
为浮点数设置固定长度,因为我的数字有不同的长度,我不想有任何尾随零。我想使用 f-strings 自动生成文件名,如下所示:
filename = f"number_{number:.10f}_other_number_{other_number:.10f}.json"
我正在寻找一个简单的修饰符,它可以禁用自动科学记数法,同时保持浮点数的原始精度。
https://docs.python.org/3.4/library/string.html#format-specification-mini-language
>>> number = 0.0000001
>>> f"Number: {number}"
'Number: 1e-07'
>>> f"Number: {number:f}"
'Number: 0.000000'
>>> f"Number: {number:.10f}"
'Number: 0.0000001000'
默认情况下 :f
的精度为 6。您可以将其更改为例如10 :.10f
numpy.format_float_positional 在这里工作得很好:
import numpy as np
number = 0.0000001
string = f"Number: {np.format_float_positional(number)}"