如何在Python中格式化数字而不进行舍入?

ubbxdtey  于 2022-12-10  发布在  Python
关注(0)|答案(2)|浏览(173)

我在网上搜索,但可以找到如果这是posible。我有一个数字,让说1234.5963657,我知道与f字符串,我可以这样做f"{number:,.2f}"获得1,234.60
问题是这个数字已经四舍五入了,我不想这样,我想得到:1,234.59,我的问题是,是否有一种方法可以像f弦一样简单地实现这一点。
如果没有,我将不得不截断它或执行以下操作:

number = 1234.5963657
int_part, dec_part = str(number).split('.')
new_number = f"{int_part}.{dec_part[:2]}" # 1234.59

希望我的问题很清楚。谢谢

abithluo

abithluo1#

再添加一位精度,然后使用切片排除不需要的数字。

f"{number:,.3f}"[:-1]
8gsdolmq

8gsdolmq2#

看看这个:
是的,您可以使用f-string格式舍入到特定的小数位数而不进行舍入。为此,您可以在f-string表达式中使用round函数,如下所示:

number = 1234.5963657
rounded_number = f"{number:,.2f}"
print(rounded_number)  # 1,234.60

# To round without rounding, use the round function in the f-string expression
rounded_number = f"{round(number, 2):,.2f}"
print(rounded_number)  # 1,234.59

在此示例中,使用round函数将数字舍入为2位小数,然后使用带有.2f格式说明符的f字符串表达式对生成的数字进行格式化。这将生成一个具有千位分隔符(,)和2位小数的字符串,而不对数字进行舍入。
或者,您也可以使用str类别的format方法来达到相同的结果,如下所示:

number = 1234.5963657
# Use the format method of the str class to format the number
rounded_number = "{:,.2f}".format(round(number, 2))
print(rounded_number)  # 1,234.59

在本示例中,使用round函数将数字舍入到2位小数,然后使用format方法将结果数字格式化为带有千位分隔符(,)和2位小数的字符串。这也会生成一个未对数字进行舍入的格式化字符串。
总的来说,这两种方法都提供了一种简单而有效的方法,可以在不进行四舍五入的情况下设置具有特定小数位数的数字的格式。
我希望这对你有用...

相关问题