四舍五入整数时,不要将数字加到末尾。

20 浏览
0 Comments

四舍五入整数时,不要将数字加到末尾。

这个问题已经在这里得到了答案:

如何实现条件字符串格式化?[复制]

我目前正在尝试使用具有可变小数位长度的数字。它可以是整数,也可以有多达10个小数,例如33.3333333。 我想在超过长度时将数字限制为仅具有2个小数,或在小于长度时保持原始状态。

我尝试使用\"{:0:.2f}\".format,但问题在于对于整数,它还会在字符串末尾添加.00。

当我尝试使用round(3)时,它将返回3.0。

是否有一种方法,最好是一行代码,可以将3.333333转换为3.33,但仍允许3保持为整数?

admin 更改状态以发布 2023年5月20日
0
0 Comments

您可以使用条件表达式根据变量的类型选择格式:

for x in (33.3333333, 3):
    print(("{:0}" if isinstance(x, int) else "{:.2f}").format(x))

您还可以使用字典将类型映射为格式字符串来实现:

formats = {int: "{:0}", float: "{:.2f}"}
for x in (33.3333333, 3):
    print(formats.get(type(x)).format(x))

0
0 Comments

尝试选择格式作为整体价值的函数:

"{d}" if int(a) == a else "{:0:.2f}"

你能完成吗?

0