Вы должны были бы привести к десятичному числу для меньших чисел
select cast(power(cast(101 as float),50) as decimal(38,0)) % 221
или
select power(cast(101 as decimal(38,0)),50) % 221
Это не удается, хотя с таким большим числом
Но тогда этов любом случае не имеет смысла для больших чисел.
- float с точностью до 15 значащих цифр.
- 101 ^ 50 = 1.64463182184388E + 100
- предел погрешности (аппроксимация с плавающей запятой) примерно на 82 порядка (1E + 82) выше, чем ваш модуль 221
Любой ответ по модулю - полный мусор
Редактировать:
Десятичное число приближается к 10 ^ 38
Возьмите число с плавающей точкой в 10 ^ 39 или 1E + 39, тогда вы с точностью до 1E24 (15 значащих цифр).
Ваш модуль равен 221= 2,2E + 2
Вы допускаете ошибку, т.е. 1E + 24 / 2,2E + 2 = 4,4E + 21
Просто чтобы быть на 100% ясным, ваша точность в 4 400 000 000 000 000 000 000 000 раз больше вашейпо модулю.
Это даже не приблизительно: это мусор