在Python中使用非标准符号表示浮点数?

3
我试图以显示目的将1.2e-08打印为12e-09,但似乎无法获得格式说明符。是否有一种表达浮点数的非标准形式的方法,而不必使用字符串操作或使用正则表达式?编辑:如果问题不清楚,我正在寻找一些让我以任何比例表达任何数字的东西,例如,如果我想将所有内容按1e-12的比例缩放,则应该有类似12000e-12的东西。谢谢
1个回答

6
请查看 decimal 模块。它应该能以您想要的格式输出。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缩放,它就无法工作。 - anijhaw
我已经修改以反映这一点。我认为没有一种方法可以在不使用字符串格式化的情况下完成它。 - tpg2114
我有点明白了,或者你可以在 e 上分割,然后自己进行所需的格式化。 - anijhaw
我认为格式字符串最能控制打印内容的方式,只是不总是很清晰。这可能是你试图做的事情最简洁的方法。你可以将其包装在一个函数中,该函数根据给定的数字和基数返回一个字符串给你。这只需要2行代码(当然没有文档 :))。 - tpg2114

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接