Python round函数不能正常工作

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

我的代码中有一个舍入函数,用于对数字进行舍入 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**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函数