Python round函数不能正常工作
我的代码中有一个舍入函数,用于对数字进行舍入 5%的时间它无法正常工作,如我的第二个示例:Python round函数不能正常工作,python,rounding,Python,Rounding,我的代码中有一个舍入函数,用于对数字进行舍入 5%的时间它无法正常工作,如我的第二个示例: Mynumber = round(3.65108567,3) #Working well print(Mynumber) 3.651 #Not working print(Mynumber) 3.65100000000000000001 我如何解决这个问题? 我使用python 3.7尝试使用以下代码 def round(n , m=2): return (n//(10**(-m)))/10
Mynumber = round(3.65108567,3)
#Working well
print(Mynumber)
3.651
#Not working
print(Mynumber)
3.65100000000000000001
我如何解决这个问题?
我使用python 3.7尝试使用以下代码
def round(n , m=2):
return (n//(10**(-m)))/10**m
我想你需要理解
3.651==3.651000000000000001
这能回答你的问题吗?这个复制品不好。它起源于Python 2天。在Python3中看到这种效果应该很少见,在Python3中,round
被正确舍入,并且打印使用最短字符串算法。请您出示复制该问题的确切代码,好吗?类型(Mynumber)
显示什么?sys.float\u repr\u样式的值是多少?这是CPython还是Python的其他风格?我无法在本地重新编写;我怀疑您只是看到了3.651
的浮点表示。如果目标是简单地打印3个小数,格式化能解决您的问题吗?e、 g.print(格式(3.65108567,.3f))
我怀疑这里的问题实际上不是round函数