Округление до двух знаков после запятой не работает - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь уменьшить десятичные разряды моего числа до двух. К сожалению, это невозможно. По этой причине я добавил свой код, возможно, вы увидите ошибку ...

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

Сумма в дБ, которую я хочу изменить:

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 голосов
/ 27 июня 2018

RAND() возвращает число с плавающей запятой.
В соответствии с приоритетом типа данных результатом умножения десятичной дроби и числа с плавающей запятой является float, попробуйте:

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

это должно сработать.

...