FString将浮点值舍入到0或1位小数,那么FString中有多少逻辑是可以的?

2024-04-25 11:45:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆浮点数,要么是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。我的诱惑是先将浮点数四舍五入到期望的精度:

^{pr2}$

如果在我的第一个例子中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的“整洁”会让人产生一种诱惑,把所有东西都塞进一行代码中。在


Tags: 方法程序stringif精度事情else例子