【发布时间】:2022-01-18 16:37:22
【问题描述】:
目标
我想将所有浮点数转换为两位小数,而不管浮点数有多少位无需重复转换代码。
比如我要转换
50 到 50.00
50.5 到 50.50
无需一次又一次地重复转换代码。我的意思将在下一部分进行解释 - 研究。
不是这个问题的目的
这个问题不是关于:
-
仅将浮点数限制为两个小数点 - 如果小数点少于两个,那么我希望它有两个小数点,未使用的空格为零。
-
小数点下限或上限。
-
四舍五入。
此问题与this 问题不重复。
该问题仅回答了我的问题的第一部分 - 将浮点数转换为两位小数,无论浮点数有多少小数位,而不是第二部分 - 无需重复转换代码。
也不是this问题。
这就是如何在小数位前添加单位。我的问题 是:如何将所有浮点数转换为小数点后两位 浮点数的小数位数,无需重复转换代码。
研究
我找到了两种实现转换的方法。一种是使用decimal 模块:
from decimal import *
TWOPLACES = Decimal(10) ** -2
print(Decimal('9.9').quantize(TWOPLACES))
另一个,不使用任何其他模块:
print(f"{9.9:.2f}")
但是,这并没有完全回答我的问题。意识到要转换的代码需要不断重复吗?我一直不得不重复代码来一次又一次地转换。可悲的是,我的整个程序已经快完成了,在这里和那里添加这段代码会很浪费时间,所以格式是正确的。有没有什么方法可以将所有浮点数转换为两位小数,而不管浮点数有多少而无需重复转换代码?
澄清
我所说的转换的意思是,就像Dmytro Chasovskyi 所说的那样,我希望我的程序中所有带有浮点数的地方在没有额外更改的情况下开始像小数一样运行。例如,如果我有操作1.2345 + 2.7 + 3 + 56.1223183,它应该是1.23 + 2.70 + 3.00 + 56.12。
另外,float 是一个数字,而不是一个函数。
【问题讨论】:
-
转换是什么意思?您是否希望程序中所有带有浮点数的地方在没有额外更改的情况下都开始像小数一样运行?例如,你有操作 1.2345 + 2.7 + 3 + 56.1223183,它们应该是 1.23 + 2.70 + 3.00 + 56.12?
-
另外,问题是你如何使用浮点数?它是
float函数还是只是一个数字 2.5678? -
@DmytroChasovskyi 是的,这正是我的目标。
-
如果您想花一点时间创建一个 float 的子类来完成所有转换,这可能是您项目早期的一个不错的实现,我不确定您是否愿意立即实施。