7
votes

Décimales de précision arbitraires en C #

DUPLICATES possibles:

gros entiers en C #
C # Numéro de décimal signifiable (précision arbitraire) sans Java

J'ai lu la question à Décimals de précision arbitraires en C #? mais je n'ai pas t avoir la bibliothèque J #. J'ai besoin d'une bibliothèque pour des décimales de précision arbitraires avec C #.


2 commentaires

Étant donné que aucun des doublons proposés ne répond réellement à la question, je vote de rouvrir. Les autres réponses sont simplement d'utiliser décimal , biginteger ou les bibliothèques J #.


La bibliothèque J # Runtime est une bibliothèque de décimales de précision arbitraires dans n'importe quelle langue .NET, C # incluse.


3 Réponses :


3
votes

Grande décimale:


2 commentaires

bigInteger et inx sont entier uniquement; Ils n'ont aucun soutien aux décimales.


@Gabe: Ugh, c'est vrai. Eh bien, J # est libre au moins :)



13
votes

Vous pouvez mettre en œuvre votre propre en fonction de la classe BigInteger de .NET 4.0. Je l'ai fait pour le plaisir, il ne fait que la multiplication:

decimal d1 = 254727458263237.1356246819m;
decimal d2 = 991658834219519273.110324m;
// MessageBox.Show((d1 * d2).ToString()); // OverflowException
BigDecimal bd1 = d1;
BigDecimal bd2 = d2;
MessageBox.Show((bd1 * bd2).ToString()); // 252602734305022989458258125319270.5452949161059356


4 commentaires

Je suggère d'utiliser s.insert (décimalpos, ".") au lieu d'appeler la sous-chaîne deux fois et concaténant.


En outre, en utilisant gitinteger pour la balance semble survenir. Vous pensez vraiment qu'il est nécessaire de prendre en charge des chiffres en dehors de la plage 10 ** (- 2 63) à Bigint * 10 ** (2 63 - 1) ???


Ceci est en fait assez bon, mais bigdecimal devrait probablement être un struct et, comme Ben suggéré, l'échelle devrait probablement être un int .


J'ai vraiment aimé cette idée et terminé le projet de soutien à tous les opérateurs de base, voir ma réponse ici: Stackoverflow.com/a/13813535/804614 < / a>



3
votes

Il y a toujours le wrapper GNU MP pour .NET tant que cela ne vous dérange pas d'utiliser le GMP .


1 commentaires

Le lien semble mort.