Очень, очень большие числа с плавающей точкой в C #
-
05-07-2019 - |
Вопрос
Я занимаюсь моделированием популяций (для забавы, в основном, чтобы поиграть с концепциями пропускной способности и функции логистики). Модель работает с несколькими планетами (сейчас их около 100 000). Когда население достигает пропускной способности на одной планете, жители начинают разветвляться на соседние планеты и т. Д.
Проблема: более 100 000 планет могут вместить много людей. Более чем C # Decimal
может обработать. Поскольку я делаю средние и другие вещи с этими числами, мне нужна возможность работать с плавающей точкой (или я бы просто использовал библиотеку BigInt).
Кто-нибудь знает класс BigFloatingPoint (или любой другой), который я могу использовать? Google сегодня очень бесполезен. Я мог бы написать класс, который бы работал достаточно хорошо, но я бы предпочел использовать что-то уже существующее, если такое существует.
Решение
Используйте единицы мегаполиса, чтобы достичь большего запаса. Р>
Кроме того, десятичная дробь позволяет вам иметь 100 000 планет, каждая из которых в 100000000000000 раз превышает население Земли, если моя арифметика верна. Вы уверены, что этого недостаточно?
Другие советы
Даже если на каждой планете проживает 100 миллиардов человек, общее количество по-прежнему составляет 1Е16 Это хорошо в пределах 64-разрядного целого числа со знаком (2 ^ 63 соответствует 9 223 372 036 854 775 807, что почти 1E19 ...
Вы можете использовать миллионы миллиардов людей на планету, имея 100000 планет, прежде чем вы приблизитесь к пределу ...
Что касается дробных и средних величин и тому подобного, не можете ли вы преобразовать в число с плавающей запятой или удвоить при выполнении каких-либо таких вычислений? Р>
Вам действительно нужна точность в 28 цифр? Не могли бы вы использовать плавающую точку для некоторых вычислений?
(если быть точным, дважды: & # 177; 5.0e & # 8722; 324 - & # 177; 1.7e308)