Question

Je suis en train de modéliser des populations (pour le plaisir, principalement pour jouer avec les concepts de capacité de charge et de fonction de logistique). Le modèle fonctionne avec plusieurs planètes (environ 100 000 d’entre elles actuellement). Lorsque la population atteint la capacité de charge sur une planète, les habitants commencent à s’étendre sur les planètes voisines, et ainsi de suite.

Problème: plus de 100 000 planètes peuvent accueillir BEAUCOUP de personnes. Plus d’un décimal en C # peut gérer. Puisque je fais des moyennes et d'autres trucs avec ces chiffres, j'ai besoin de la capacité de travailler avec des points flottants (ou j'utiliserais simplement une bibliothèque BigInt).

Est-ce que quelqu'un connaît une classe BigFloatingPoint (ou tout ce que je peux utiliser)? Google est très inutile aujourd'hui. Je pourrais probablement écrire un cours qui fonctionnerait assez bien, mais je préférerais utiliser quelque chose de pré-existant, si une telle chose existe.

Était-ce utile?

La solution

Utilisez des unités de mégaphone pour obtenir une plus grande marge d’attente.

De plus, Decimal vous permet d’avoir 100 000 planètes chacune, avec une population de 1 000 000 000 000 de fois supérieure à la Terre, si mon calcul est correct. Êtes-vous sûr que cela ne suffit pas?

Autres conseils

Même si chaque planète compte 100 milliards d’habitants, le total n’est toujours que de 1E16. C’est bien dans la limite d’un nombre entier signé de 64 bits (2 ^ 63 passe à 9 223 372 036 857 775 807, ce qui est presque 1E19 ...

Vous pourriez aller avec un million de milliards de personnes par planète, avec 100 000 planètes avant de vous approcher de la limite ...

En ce qui concerne les fractions, les moyennes et autres, ne pouvez-vous pas convertir en float ou en double lorsque vous effectuez de tels calculs?

Avez-vous vraiment besoin d’une précision de 28 chiffres? Pourriez-vous utiliser la virgule flottante pour certains calculs?

(double pour être exact: ± 5.0e - 324 à ± 1.7e308)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top