【发布时间】:2013-02-06 12:19:43
【问题描述】:
我想格式化最多包含 2 个小数位的浮点数列表。但是,我不想要尾随零,也不想要尾随小数点。
例如,4.001 => 4, 4.797 => 4.8, 8.992 => 8.99, 13.577 => 13.58。
简单的解决方案是('%.2f' % f).rstrip('.0')('%.2f' % f).rstrip('0').rstrip('.')。但是,这看起来相当丑陋,而且似乎很脆弱。任何更好的解决方案,也许有一些神奇的格式标志?
【问题讨论】:
-
我是否错过了这里的重点,或者
round()函数呢:docs.python.org/2/library/functions.html#round -
不过,我不得不说,我不太喜欢涉及
round的解决方案,因为我很紧张,总有一天我会得到1.1000000000009962作为输出。 -
啊,这不是重复的!我不想尾随
.0。另一个问题允许这样做。 -
@nneonneo 我相信
int()将摆脱.0,但请谨慎使用,因为它会摆脱任何其他小数位(所以也许是 if/else 语句?)跨度> -
@Haidro: ...现在这越来越恶心了。我希望我不需要
if/else,或者我只是以'.%2f' % f或其他东西为条件。 (仍然很难有一个好的解决方案......我真的习惯了在 Python 中非常简单的事情)
标签: python floating-point string-formatting