SQL Server十进制值未正确插入



我需要保存精度高达14位的十进制值(十进制(20,14((。然而,如果插入的值具有较低精度的数字,则丢失的数字将随机完成,而不仅仅是加零。例如,值382.593375保存为382.59337499999998。类似地,381.949875被保存为381.94987500000002。

我尝试使用数据类型float而不是decimal,但保存的值不能达到14位小数。有什么帮助吗?

问题在于您选择的数据类型,而不是SQL Server。此问题可通过以下方式复制:

SELECT CONVERT(decimal(20,14),CONVERT(float,382.593375));

这将返回值382.59337499999998。这并不奇怪,因为基数为2的值(float就是(不能准确地存储基数为10的非整数值。因此,当值被转换回到基数为10的值(在这种情况下为decimal(20,14)(时,使用float的精度。

解决方案?在定义输入参数的过程中,请确保将值定义为基数为10的数据类型;那么你就不会遇到舍入问题。

最新更新