Question

Les opérations numériques que nous faisons dans nos programmes sont limités par le nombre d'octets une langue précise pour un type donné (ou peut-être des supports matériels). Dire que je peux utiliser entier pour effectuer des calculs sur mon salaire (même « court » est plus que suffisant pour le gain d'un an !!!;)), mais ne peut pas faire la même chose avec Bill Gates, la richesse. Donc, nous allons pour des choses comme long long et d'autres choses. Mais nous ne sommes pas encore à la merci du nombre de bits qui nous sont donnés.

Alors, que diriez-vous si j'émulent les opérations numériques dans le logiciel? Dites une classe que les résumés et peuvent effectuer des opérations numériques sur des nombres avec 1000s de chiffres ... Bien sûr, il sera trop trop lent, mais je ne suis pas beaucoup inquiété de la complexité mais en regardant plus à seulement calculabilité ...

Peut-être que je peux l'utiliser pour calculer PI à 1000 précision de chiffres dans un mois ou un Mersenne quelques années en nombres premiers et ramener à la maison 100K $;)

Alors maintenant ma question, 1) Y at-il déjà de telles bibliothèques à faire ce genre de choses là-bas (en C / C ++). 2) Si je vais à propos de la mise en œuvre d'un, avez-vous des suggestions pour moi? (+, -, *, /,%, <<, >> opérations assez je suppose que devraient)


PS:

  1. Je suis programmeur de C / C.

  2. Et cette limitation a commencé à me casser les pieds de mes jours d'école.

Était-ce utile?

La solution

Ces types de données sont connus comme un nombre arbitraire de précision. En Java, il y a les classes BigDecimal et BigInteger qui gèrent les opérations de base (+, -, *, /) au niveau de chiffres. Ils ont pas « intégré » limitation de taille. Ils sont en fait pas lents et sont utilisés dans beaucoup de domaines dans le monde réel.

C / C ++ ne l'ont pas intégré, mais il y a beaucoup de bibliothèques là-bas. Voir la liste ici: http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic#Libraries

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