我有一个varchar
列,我正在尝试将其转换为numeric(8,2)
,以便像1.00
一样返回它,但它会像这样返回{{1} }
示例:
1.000
返回 Select
Convert(numeric(8,2),WholesaleCost) * 2.2)
FROM Table
似乎当我将比例缩小到50.900
而不是numeric(8,1)
时,它会返回我想要的状态,即numeric(8,2)
有谁知道为什么这样做?为什么在结果中添加额外的比例数字?我做50.90
时不应该是50.9
吗?
答案 0 :(得分:1)
因为您正在执行numeric(8,2) * numeric(2,1)
,结果数据类型为numeric(11,3)
当两个numeric
数字e1 * e2
相乘时,结果具有精确度p1 + p2 + 1
,并按Precision, Scale, and Length缩放s1 + s2