我在SQL中的Quantity字段中将值(0.15)存储为Real数据类型。
只是玩,当我作为数字转换时,缩放有一些非常小的变化。
我不确定为什么会发生这种情况,以及为什么会出现这些特殊数字?
select CAST(Quantity AS numeric(18,18)) -- Quantity being 0.15
回报
0.150000005960464480
Real和float是近似数值,而不是精确数值。如果您需要精确的,请使用DECIMAL。估计的好处是它们允许使用更少的存储字节存储非常大的数字。 https://docs.microsoft.com/en-us/sql/t-sql/data-types/float-and-real-transact-sql?view=sql-server-2017
PS:数字和小数是同义词。
PS2:请参阅下面的Eric的Postpischil澄清评论:“Float和real表示一个数字作为有效数乘以2的幂。十进制表示一个数字作为有效数乘以10的幂。两种表示方式都无法表示所有实数数字和两种表示方式都会受到舍入误差的影响。正如我所写的那样,以十进制格式将1除以3会产生舍入误差“