【问题标题】:How can I convert a float in a str without losing significant figures?如何在不丢失有效数字的情况下转换字符串中的浮点数?
【发布时间】:2016-09-11 18:04:09
【问题描述】:

我想将数字0.054000 转换为str,但是当我写srt(0.054000) 时,我得到'0.054'。我需要得到'0.054000'。我该怎么做?

我有一个带有数字的数据文件作为我的示例 (0.054000)。我需要计算每个数字的位数。例如,我不知道如何以七位数的方式读取该数字。

【问题讨论】:

  • >>> a = 0.054 >>> "{:08f}".format(a) 给出 '0.054000'
  • @DanPatterson 不应该是"{:06f}".format(a)吗?
  • 应该使用 !r ... >>> "{!r:>> "{!r:
  • 我认为这是Nicely representing a floating-point number in python的副本,代码来自接受的答案f(0.0056, 5) -> '0.0056000'
  • @DanielaAlzate:然后将其作为字符串读取。首先不要将其转换为浮点数。

标签: python string number-formatting


【解决方案1】:

我认为 Dan Patterson 的方法是可靠地做到这一点的唯一方法 - python 没有区分 .0054 和 .054000:例如

>>> .0054 is .0054000
True

因此,您可能必须使用他的方法或 (str(.0054000) + "0"*number_of_sig_figs) 简单地指定您在 sig figs 中的位数。

【讨论】:

  • 为什么你会在实际代码中使用(str(.0054000) + "000")?那只是在数字末尾加上3个0,与有效数字无关。
  • @TadhgMcDonald-Jensen 这没有多大意义,抱歉。我的意思是你必须跟踪你有多少 sig figs 并在最后添加那些零。
  • 但考虑到.0054000 应该有5 有效数字,您实际上将如何确定应该在末尾添加 3 个额外的零?
【解决方案2】:

格式说明符以冒号开头,然后可以包含任何显示的术语 以下括号中(每个术语都是可选的)

: [[fill]align] [sign] [#] [0] [width] [,] [.precision] [type]

下面提供了 [.precision] 的简要说明。

.precision:字符串的最大字符数(整数);的位数 浮点数的精度。对于 f、F、e 和 E 类型说明符,这是数字 小数点右边的位数。

我们可以使用它来指定浮点值的精度:

a=0.540000
print("{:06f}".format(a))

这给出了所需的输出:

0.540000

希望这对您有所帮助!

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多