有限浮点小数点而不对数字进行四舍五入

1 python floating-point numbers decimal-point rounding

我想将一个数字转换为具有 3 位小数点的浮点数,但我希望它不进行四舍五入。例如:

a = 12.341661
print("%.3f" % a)
Run Code Online (Sandbox Code Playgroud)

此代码返回此数字:

12.342
Run Code Online (Sandbox Code Playgroud)

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

12.341
Run Code Online (Sandbox Code Playgroud)

我编写了一个代码,从用户那里接收数字并将其转换为浮点数。我不知道用户输入的数字是什么。

joa*_*nis 6

我的第一个想法是改为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)
Run Code Online (Sandbox Code Playgroud)

这会输出你想要的:

12.341
Run Code Online (Sandbox Code Playgroud)

即使输入较少,要得到 3 位小数,您可以格式化输出:

a = 3.1
b = int(a*1000)/1000.
print("%.3f" % b)
Run Code Online (Sandbox Code Playgroud)

输出:

3.100
Run Code Online (Sandbox Code Playgroud)