Помещение переменных в уравнение округляет их значения - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть 2 DECIMAL(17,5) переменные, которые производят точные вычисления.Когда они нажимают на выражения, они продолжают округлять свои значения.

Используя список наблюдения, я вывел это так:

@TotalAmount = 62.30000
@ConversionValue = 0.74630

HOWEVER

SELECT @TotalAmount * @ConversionValue

возвращает 62, когда онодолжно быть возвращено 46.49449

CAST(@TotalAmount AS decimal(17,5)) returns 62.00000
CAST(@ConversionValue AS decimal(17,5)) returns 1.00000

SELECT @TotalAmount returns 62.00000
SELECT @ConversionValue returns 1.00000

1 Ответ

0 голосов
/ 21 сентября 2019

Я предполагаю, что вы используете SQL Server, а не postgres или mySQL, здесь вы использовали тег SSMS).

Если бы это было так, я бы просто был явным и «слишком» точным в объявлении вашей переменной.Также обратите внимание, что вы можете получить «больше» точности в памяти, которая будет усечена, если исходная переменная не верна.Подобный пост здесь:

Назначение десятичной переменной SQL Server?

declare @A decimal(18, 3);
declare @B decimal(18, 3);
declare @C decimal(18, 3);

set @A = 4;
set @B = 9;
set @C = @A/@B 

select @A/@B -- 0.44444444444444444444
select @C    -- 0.444
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...