
获得徽章 0
赞了这篇文章
赞了这篇文章
赞了这篇文章
#每天一个知识点# 在看阿里巴巴开发手册时看到一点,在建表时,若是小数类型的数据不要设置为float和double类型,原因是在存储时,float和double类型存在精度缺失的问题,虽然缺失很小,但在比较值的时候很可能导致得不到正确结果,建议使用decimal类型的数据,如果存储的数据范围超过decimal的范围,建议将数据拆分成整数和小数分开存储。
为什么在存储时会出现精度缺失的问题呢?
1.浮点数精度问题:浮点数在计算机内部以二进制形式进行表示,而十进制数无法精确表示为二进制数。因此,某些十进制数在使用 FLOAT 或 DOUBLE 存储时可能会导致精度损失。例如,十进制数 0.1 在二进制中无限循环,因此存储为 FLOAT 或 DOUBLE 类型时可能会产生舍入误差。
2.运算结果精度问题:在进行浮点数运算时,FLOAT 和 DOUBLE 类型的结果可能会有舍入误差,导致精度损失。这是因为浮点数运算涉及舍入、舍入模式以及浮点数的有限精度。
为什么在存储时会出现精度缺失的问题呢?
1.浮点数精度问题:浮点数在计算机内部以二进制形式进行表示,而十进制数无法精确表示为二进制数。因此,某些十进制数在使用 FLOAT 或 DOUBLE 存储时可能会导致精度损失。例如,十进制数 0.1 在二进制中无限循环,因此存储为 FLOAT 或 DOUBLE 类型时可能会产生舍入误差。
2.运算结果精度问题:在进行浮点数运算时,FLOAT 和 DOUBLE 类型的结果可能会有舍入误差,导致精度损失。这是因为浮点数运算涉及舍入、舍入模式以及浮点数的有限精度。
展开
评论
点赞