sql server 乘法 丢失精度有关问题
sql server 乘法 丢失精度问题
现在有一张表tba(pric, nav ,factor)
select pric, nav ,factor, pric*factor ---908.880050
from tba

这种在 表查询里面乘法 和 单独拿出来乘结果是不一样的。
--- 908.8800495726000000000
SELECT 1004.3600000000 *0.904934535
一个是 908.880050 一个是 908.8800495726000000000,, 怎么才能保证不丢失精度,即使用 ROUND(,10) 还是没有用。
------解决思路----------------------
用decimal或者numeric来cast每一列的类型及计算后的最终类型,说白了就是把类型统一,如果你的列本来是float型的话,数据存储是不精确的
------解决思路----------------------
你看看,应该是你表的数据类型定义的问题吧。。。
现在有一张表tba(pric, nav ,factor)
select pric, nav ,factor, pric*factor ---908.880050
from tba
这种在 表查询里面乘法 和 单独拿出来乘结果是不一样的。
--- 908.8800495726000000000
SELECT 1004.3600000000 *0.904934535
一个是 908.880050 一个是 908.8800495726000000000,, 怎么才能保证不丢失精度,即使用 ROUND(,10) 还是没有用。
------解决思路----------------------
用decimal或者numeric来cast每一列的类型及计算后的最终类型,说白了就是把类型统一,如果你的列本来是float型的话,数据存储是不精确的
------解决思路----------------------
你看看,应该是你表的数据类型定义的问题吧。。。