Я просто смотрю на некоторые очень незначительные несоответствия в отчете, который я составляю, и меня смущает вопрос о том, что является лучшим методом в SQL Server для приведения типов, и если кто-то может мне указать правильное направление, чтобы объяснить что я вижу.
Очень небольшая ошибка 1p в некоторых случаях при использовании текущего расчета на данных, аналогичных показанным в таблице примера @data
.
Может ли кто-нибудь указать мне правильное направление или хотя бы сказать, на что я смотрю, чтобы я мог продолжить исследования?
Приведенный ниже код дает пример вывода:
declare @data table (qty decimal(24,12), price decimal(24,12), multiplier decimal(24,12), rate1 decimal(24,12), rate2 decimal(24,12))
insert into @data
select 21505.000000000000, 30.475000000000, 1.000000000000,1.166500000000, 1.166500000000
select round(data.current_method, 2) as current_method_round, round(data.expected_result_method, 2) as expected_result_round, * from
(select
((qty * price * multiplier) /rate1) * rate2 as current_method,
cast(cast(cast(qty * price * multiplier as decimal(24,12)) / rate1 as decimal(24,12)) * rate2 as decimal(24,12)) as expected_result_method,
((21505.000000000000 * 30.475000000000 * 1.000000000000) / 1.166500000000) * 1.166500000000 as checkvalue,
*
from @data ) data