让我们考虑一下这种情况:
from math import sqrt
x = sqrt(19) # x : 4.358898943540674
print("{:.4f}".format(x))
# I don't want to get 4.3589
# I want to get 4.3588
print()
功能会自动对数字进行舍入,但我不想这样做。我该怎么办?
答案 0 :(得分:0)
如果您希望将数字向下舍入到小数点后第四位而不是将其四舍五入到最接近的可能性,您可以自己进行舍入。
x = int(x * 10**4) / 10**4
print("{:.4f}".format(x))
这会给你
4.3588
乘以后以10**4
除以4位小数位移,int
函数向下舍入为整数。将它们结合起来就可以实现你想要的。由于浮点问题,有一些边缘情况会产生意外结果,但这些情况很少见。
答案 1 :(得分:0)
这是一种方法。 truncate
函数courtesy of @user648852。
from math import sqrt, floor
def truncate(f, n):
return floor(f * 10 ** n) / 10 ** n
x = sqrt(19) # x : 4.358898943540674
print("{0}".format(truncate(x, 4)))
# 4.3588
答案 2 :(得分:0)
最初做更多工作并删除固定数量的多余数字:
from math import sqrt
x = sqrt(19) # x : 4.358898943540674
print(("{:.9f}".format(x))[:-5])
给出了期望的结果。如果x的格式为?.????999996
或类似,但仍然可能会失败,但这些数字的密度相当小。
答案 3 :(得分:0)
基于舍入后的浮点数舍入整数的常见解决方案是在舍入前加0.5。 因此,当您想舍入到小数点后第4位时,在四舍五入前减去.00005即可得出所需的结果。
x = 1.88888
print("{:.4f}".format(x - .00005))
1.8888