Результат округления SQL до 5 десятичных знаков, я хочу полный результат - PullRequest
0 голосов
/ 31 октября 2018

Я не специалист по математике или SQL (Microsoft SQL Server 2017), поэтому я не знаю, почему это происходит.

Итак, мой запрос ((1000000000*0.00002 * POWER(10, (82.6 / 20))) / 1000000000) AS FJS

Теперь по какой-то причине результат равен 0,2697800000000000 или 0,26978 , но когда я помещаю точно такой же запрос в калькулятор или Google, результат будет 0,26979257651 Сумма, которую я положил в Google, составляет

(1000000000*0.00002*(10^(82.6/20)))/1000000000

или

используйте эту ссылку

Буду признателен за любую помощь или совет.

1 Ответ

0 голосов
/ 31 октября 2018

Проблема в том, что результат POWER(10, (82.6 / 20)) равен 13489, что далеко от точного значения. Это связано с тем, что POWER возвращает тип ввода, который в данном случае равен INT. Это не особенно полезно, но является задокументировано [1] .

Исправление - сделать первый аргумент FLOAT, который также выводит остальную часть выражения в строку. Самый простой способ сделать это - прикрепить e, поэтому:

SELECT ((1000000000*0.00002 * POWER(10e, (82.6 / 20))) / 1000000000)

дает 0.269792576518331. Если вы предпочитаете, CAST(10 AS FLOAT) также подойдет. Использование 10.0 будет не делать, потому что этот литерал имеет тип DECIMAL(3,1), а POWER(10.0, (82.6/20)) равен 13489.6, что не намного лучше, чем то, с чего мы начали.


[1]: документация, однако, неверна, когда говорится, что типом вывода является DECIMAL(2,0), если типом ввода является: в моем тесте передача DECIMAL любой точности приводит к DECIMAL точность 38, а не оригинальная точность. Есть и другие аномалии. Я отправил запрос на удаление, чтобы исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...