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

时间:2018-10-25 20:32:14

标签: python floating-point numbers rounding decimal-point

我想将数字转换为带小数点后3位的浮点数,但我希望不取整。 例如:

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

此代码返回以下数字:

12.342

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

12.341
  

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

2 个答案:

答案 0 :(得分:2)

我的第一个想法是将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

答案 1 :(得分:0)

尝试str和切片

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