#sql-server-2017
#sql-server-2017
Вопрос:
Произошла ошибка арифметического переполнения при преобразовании выражения в тип данных bigint, когда я применяю функцию приведения к 60-значному числу.
Комментарии:
1. [Bigint][1] — 64-разрядное целое число со знаком. Следовательно, максимально возможное значение равно 9,223,372,036,854,775,807:
SELECT CAST(0x7fffffffffffffff AS bigint);
. Планируете ли вы выполнить арифметику для значения?2. можете добавить свой код с появлением ошибки.
Ответ №1:
Наибольшее положительное значение, которое BIGINT
может храниться 2^63-1
, это примерно 1x10^18
. Использование DECIMAL
or NUMERIC
позволит увеличить объем памяти, вплоть до 1x10^38
. Но ни один из них не может вместить 60 цифр точности.
Возможно, вы захотите спросить себя, действительно ли вам нужно поддерживать такую точность для такого большого числа.