有限的浮点数小数点不四舍五入

limited float decimal point without rounding the number

我想将数字转换为带小数点后 3 位的浮点数,但我希望它不四舍五入。 例如:

a = 12.341661
print("%.3f" % a)

这个代码return这个号码:

12.342

但是我需要原始号码,我需要这个:

12.341

I write a code that receive a number form user and convert it to a float number. I have no idea that what is the number entered with user.

尝试 str 和切片

a = 12.341661
b = str(int(a))
c = str(a - int(a))[1:5]
d = b + c
print(d)

我的第一个想法是将 print("%.3f" % a) 更改为 print("%.3f" % (a-0.0005)) 但它并不完全有效:虽然它输出你想要的 a=12.341661,但如果 a=12.341 它输出 12.340,这是显然不对。

相反,我建议使用 int():

明确地做地板
a = 12.341661
b = int(a*1000)/1000.
print(b)

这会输出你想要的:

12.341

要在输入较少的情况下得到 3 位小数,您可以格式化输出:

a = 3.1
b = int(a*1000)/1000.
print("%.3f" % b)

输出:

3.100