【问题标题】:Express floating point numbers in non standard notation in python?在 python 中用非标准符号表示浮点数?
【发布时间】:2011-12-14 00:52:03
【问题描述】:

我正在尝试将 1.2e-08 打印为 12e-09 用于显示目的,但似乎无法获取格式说明符。

有没有办法以非标准形式表达浮点数,而无需求助于字符串操作或使用正则表达式?

编辑:如果问题不清楚,我正在寻找可以让我以任何比例表达任何数字的东西,例如,如果我想以 1e-12 的比例缩放所有东西,那么我应该有类似 12000e-12 的东西

谢谢

【问题讨论】:

    标签: python floating-point


    【解决方案1】:

    查看十进制模块。它应该能够以您想要的格式输出。

    http://docs.python.org/library/decimal.html

    对于您所描述的(工程符号),有一个 to_eng_string() 方法。

    编辑

    根据您的说明,您可以分部分构建数字:

    myNumber = 1.2e-8
    myBase = 1e-12
    mantissa = myNumber/myBase
    print "{0:1}{1:s}".format(mantissa, "{0:1}".format(myBase)[1:])
    

    将打印: 12000.0e-12

    如果您知道尾数总是使用整数,您可以相应地调整格式。

    【讨论】:

    • 我已经检查过了,我知道十进制模块它不会对所有基础都这样做,例如,如果我想表达缩放到 1e-12 的所有内容,它就行不通。
    • 我进行了编辑以反映这一点。我不认为没有字符串格式可以做到这一点。
    • 是的,我明白了,或者您可以在 e 上拆分,然后自己进行所需的格式化。
    • 我认为格式字符串可以最大程度地控制如何打印内容,但它们并不总是清晰的。这可能是做你想做的最简洁的方法。您可以将其包装在一个函数中,该函数返回一个给定数字和基数的字符串。这将是 2 行(当然没有文档 :))
    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2020-06-19
    • 2014-05-15
    • 1970-01-01
    • 2011-08-10
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多