Ошибка в функции приведения при преобразовании 60-значного числа в bigint

#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 цифр точности.

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