我有一堆浮点数,要么是x.0或x.5,如果是x.0,我不想显示小数点,如果是x.5,我希望显示一个小数点。在
我想出了一个简单的方法:
f'{x:+.{int(bool(x % 1))}f}'
其中int(bool(x % 1))
将始终为0或1,这取决于模是否产生余数。在
这很好地工作,因为我的浮点输入的性质,但它让我思考,如果我的输入不是那么整洁呢?例如,上面的一个以10.01
作为输入的一行程序返回10.0
。我的诱惑是先将浮点数四舍五入到期望的精度:
如果在我的第一个例子中f-string
内部没有太多的事情发生,那么现在就有了。在
我想说清楚我的问题:
首先,我的第一个方法是不是“正确”的方式来实现我在现实世界中的投入?在
第二,假设问题和我的第二个例子怎么样?在
第三,我想从社区收集关于使用f-string
的越界滥用的意见。作为一个例子,我们可能会想把很多东西打包到f-string
中,那么像这样的方法来获得一个包含数字的字符串列表,以便按字母顺序排序:
f"String with number:{' ' if x >= 1000 else ' ' if x >= 100 else ' ' if x >= 10 else ' '}{x:+.{int(bool(round(x, 1) % 1))}f}"
所以我希望把这个关于过度使用f-string
的问题和我的四舍五入问题联系起来,不会让整个问题变得太模糊,但这是我正在一起考虑的两个问题。我想f-string
的“整洁”会让人产生一种诱惑,把所有东西都塞进一行代码中。在
目前没有回答
相关问题 更多 >
编程相关推荐