如果没有,应该用什么来代替?我很惊讶我还没有发现任何关于这个的问题。
uxh89sit1#
对于小数,可以使用decimal数据类型或double数据类型。但是,您可能会尝试使用float数据类型,这在某些情况下可能会导致问题如果您存储的是数字13.59,在浮点数据类型的情况下,它将首先转换为二进制数字,然后存储。检索数据时,二进制将转换为十进制,然后显示。但这里的问题是13.59不能用有限个二进制数字来描述。二进制13.59将是1101.1001011。。。。。。取回时为13.590001528789。。。因此,如果在任何查询中将此值与13.59进行比较,将得到错误的结果。十进制和双精度不会导致这个问题,因为它们不存储二进制。最好的建议是避免浮动
1条答案
按热度按时间uxh89sit1#
对于小数,可以使用decimal数据类型或double数据类型。
但是,您可能会尝试使用float数据类型,这在某些情况下可能会导致问题
如果您存储的是数字13.59,在浮点数据类型的情况下,它将首先转换为二进制数字,然后存储。检索数据时,二进制将转换为十进制,然后显示。但这里的问题是13.59不能用有限个二进制数字来描述。
二进制13.59将是1101.1001011。。。。。。取回时为13.590001528789。。。
因此,如果在任何查询中将此值与13.59进行比较,将得到错误的结果。
十进制和双精度不会导致这个问题,因为它们不存储二进制。
最好的建议是避免浮动