Очень, очень большие числа с плавающей точкой в ​​C #

StackOverflow https://stackoverflow.com/questions/421612

  •  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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top