【问题标题】:Strip trailing zeros from float while aligning with format()在与 format() 对齐时从浮点数中去除尾随零
【发布时间】:2014-11-05 08:06:53
【问题描述】:

我正在尝试将浮点数存储到有时可能包含尾随零的文件中。

当应用{:g} 时,结果是预期的:尾随零被删除。当我尝试对齐文本文件中的浮点数时,问题就出现了,在这种情况下,我使用{:>10.0g},结果是以科学记数法编写的浮点数,而不是仅仅去掉它的尾随零。

这是一个 MWE:

a = 546.0
b = 6785.35416

with open('format_test.dat', 'a') as f_out:
    f_out.write('{:g} {:>15.3f}'.format(a, b)) # <-- NO ZEROS BUT NOT ALIGNED
    f_out.write('\n')
    f_out.write('{:>10.0g} {:>15.3f}'.format(a, b)) # <-- ALIGNED BUT IN SC NOTATION

输出:

546        6785.354
     5e+02        6785.354

有什么方法可以从format() 端解决这个问题,而不必在传递之前篡改浮动?

【问题讨论】:

  • 我下定决心我应该使用{:g} 来删除我什至没有想到使用0.f 的尾随零。您介意发表您的评论作为答案,以便我接受吗?

标签: python string-formatting


【解决方案1】:

g 将根据值的大小自动切换到科学记数法(参见the docs)。你可以通过使用f 来获得你想要的两个值:

>>> '{:>10.0f} {:>15.3f}'.format(546.0, 6785.354)
'       546        6785.354'

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2018-11-15
    • 2017-09-19
    • 1970-01-01
    • 2020-02-06
    • 2014-11-04
    相关资源
    最近更新 更多