【问题标题】:How to represent float to str in Python? [duplicate]如何在 Python 中将浮点数表示为 str? [复制]
【发布时间】:2020-11-15 09:54:32
【问题描述】:

代码如下:

a = 0.0000224332413
a = str(a)
print(a)  # 2.24332413e-05

如何精确地使 str(a) = 0.0000224332413 不是 2.24332413e-05 ? 提前致谢。

【问题讨论】:

  • 可能值得注意的是,这与str 无关。 0.0000224332413 早在 str 知道之前就变成了 2.24332413e-05
  • here 中提出了类似的问题。希望对您有所帮助。
  • @DeepSpace 我真的不知道你在说什么?
  • @roganjosh 刚刚指出,科学记数法的“转换”与str 无关,甚至在它被调用之前就发生了
  • @DeepSpace 那是我感到困惑的部分:P 科学记数法是一种显示,所以你的评论对我来说就像其他事情正在发生一样。在内部,我认为这无关紧要

标签: python python-3.x string math floating-point


【解决方案1】:

你可以使用 f-strings:

a = 0.0000224332413
b = f"{a:.13f}"
print(b)

返回:

0.0000224332413

对 cme​​ts 的回应:最接近动态固定小数位数的方法可能如下(需要以字符串开头的数字,这违背了整个目的):

import decimal

s = '0.0000224332413'
d = decimal.Decimal(s)
n = d.as_tuple().exponent
n *= -1
a = f"{d:.{n}f}"
print(a)

返回:

0.0000224332413

【讨论】:

  • 这是个好方法。但这更像是一种动手方法。有没有办法自动插入和计算参数(本例中为 13)?例如,像这样的一些函数: def function(float): string = str(float) 也许你知道?
  • 答案已更新
【解决方案2】:

您可以使用字符串文字或 string.format()。您可以使用字符串文字或 string.format()。

查看这篇文章了解更多信息:https://www.kite.com/python/answers/how-to-suppress-scientific-notation-in-python

a = 0.0000224332413
print(a)  # 2.24332413e-05

b = str(a)
print(b)  # 2.24332413e-05

c = f"{a:.13f}"
print(c)  # 0.0000224332413

d = f"{a:.4f}"
print(d)  # 0.0000

print(f"{a:f}") # 0.000022

【讨论】:

  • 我在上面的评论:这是一个好方法。但这更像是一种动手方法。有没有办法自动插入和计算参数(本例中为 13)?例如,像这样的一些函数: def function(float): string = str(float) 也许你知道?
  • 我认为古斯塔夫有一个很好的解决方案。
猜你喜欢
  • 2021-10-15
  • 1970-01-01
  • 2017-12-21
  • 2011-08-10
  • 2015-12-02
  • 1970-01-01
  • 2021-04-20
  • 2013-08-10
  • 2012-04-04
相关资源
最近更新 更多