Обработка чисел за диапазонами 64 битной системы

  • Автор темы Автор темы DevOps
  • Дата начала Дата начала

DevOps

Client
Регистрация
30.11.2020
Сообщения
497
Реакции
316
Баллы
63
Добрый день форумчане
При работе с большими числами имеется такой "затык" в обработке, так как - 64-битный регистр способен хранить в себе одно из 2 64 = 18 446 744 073 709 551 616 неподписанных значений или же 922 337 2036 854 775 807 значений со знаками.
Имеется в C# возможность как то раздвинуть эти границы для обработки значений на много порядков выше?
Я вижу что в онлайне, имеются калькуляторы которые принимают и обрабатывают числа с очень большими порядками, но вот сколько не гуглил - про Шарп такого не нахожу (хотя может сглазами не в порядке).
Спасибо
 
разрядность типа double составляет 64 бита, что приближенно соответствует диапазону представления чисел от 5E-324 до 1,7Е+308
 
  • Оценить
Реакции: DevOps
Добрый день форумчане
При работе с большими числами имеется такой "затык" в обработке, так как - 64-битный регистр способен хранить в себе одно из 2 64 = 18 446 744 073 709 551 616 неподписанных значений или же 922 337 2036 854 775 807 значений со знаками.
Имеется в C# возможность как то раздвинуть эти границы для обработки значений на много порядков выше?
Я вижу что в онлайне, имеются калькуляторы которые принимают и обрабатывают числа с очень большими порядками, но вот сколько не гуглил - про Шарп такого не нахожу (хотя может сглазами не в порядке).
Спасибо
94681

94682
 
  • Оценить
Реакции: DevOps
разрядность типа double составляет 64 бита, что приближенно соответствует диапазону представления чисел от 5E-324 до 1,7Е+308
Здравствуйте
То есть получается в Шарпе это не возможно сделать?
По ссылке взял для теста образец кода, вставил максимальное значение 9223372036854775807 и попробовал умножить на 10
C#:
Развернуть Свернуть Копировать
long result;
const long test = 9223372036854775807;
result = test * 10;
В итоге
Компиляция кода Ошибка в действии "CS0220" "The operation overflow at compile time in checked mode". [Строка: 3; Cтолбец: 10]
:(
UPD Затупил, поставил double и норм, спасибо
UPD 2 Я получил такой результат 9,22337203685478E+18 подскажите, как мне теперь работать с ним дальше? Как привести это значение в нормальное число, чтобы вывести, например в список "за борт"
 
Здравствуйте
То есть получается в Шарпе это не возможно сделать?
По ссылке взял для теста образец кода, вставил максимальное значение 9223372036854775807 и попробовал умножить на 10
C#:
Развернуть Свернуть Копировать
long result;
const long test = 9223372036854775807;
result = test * 10;
В итоге
Компиляция кода Ошибка в действии "CS0220" "The operation overflow at compile time in checked mode". [Строка: 3; Cтолбец: 10]
:(
Ошибка компиляции потому что получаемое число не влезает в диапазон чисел Long, используй ulong
 
  • Оценить
Реакции: DevOps
А лучше используй var, как реальные пацаны) пусть компилятор сам разбирается че ему там надо)
 
var тут вызывает такую же ошибку
"The operation overflow at compile time in checked mode"
94687

94688


C#:
Развернуть Свернуть Копировать
            string a = "91389681247993671255432112000000";
            string b = "91389681247993671255432112000000";

            BigInteger result = (BigInteger.Parse(a) * BigInteger.Parse(b));



            project.SendErrorToLog(Convert.ToString(result));
 
Посмотреть вложение 94687
Посмотреть вложение 94688

C#:
Развернуть Свернуть Копировать
            string a = "91389681247993671255432112000000";
            string b = "91389681247993671255432112000000";

            BigInteger result = (BigInteger.Parse(a) * BigInteger.Parse(b));



            project.SendErrorToLog(Convert.ToString(result));
Просто феерично
Спасибо !!!!!!!!!!!
UPD Вылавливать на ошибке - это что то, но есть "затык" в список то никак не записать
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)