四舍五入到小数点后两位无效

时间:2018-06-27 11:11:23

标签: tsql random decimal rounding

我正在尝试将我的数字的小数位数减少到两位。不幸的是不可能。因此,我添加了一些代码,也许您会看到错误...

Update [dbo].[company$Line] SET
Amount = ROUND((SELECT RAND(1) * Amount),2),
...
SELECT * FROM [dbo].[company$Line]

我要更改的db中的金额:

0.00000000000000000000
1914.65000000000010000000
376.81999999999999000000
289.23000000000002000000

执行代码后得到的结果:

0.00000000000000000000
1366.28000000000000000000
268.89999999999998000000
206.38999999999999000000

我想要得到的结果(或类似的东西):

0.00000000000000000000                  or 0.00
1366.30000000000000000000               or 1366.30
268.99000000000000000000                or 268.99
206.49000000000000000000                or 206.49

1 个答案:

答案 0 :(得分:1)

RAND()返回浮点数。
根据{{​​3}},将十进制数和浮点数相乘的结果是浮点数,请尝试:

ROUND(CAST(RAND(1) as decimal(28,12)) * Amount, 2)

这应该可以解决问题。