Proposer une bonne méthode pour avoir un nombre avec une grande précision en C #

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

  •  13-09-2019
  •  | 
  •  

Question

Je suis programmation sur un projet que je dois stocker la clé de l'utilisateur à la configuration initiale d'une machine, je veux écrire en C #.

I présentent une configuration initiale qui consiste en deux nombres R et X0, R = 3,9988 et X0 = 0,5. Je veux ajouter la clé utilisateur à ces chiffres. par exemple:

Clé: hos110 =>

  • R = 3,9988104111115049049048
  • X0 = 0,5104111115049049048

104111115049049048 sont des codes ASCII de la clé qui sont concaténés.

Comment puis-je enregistrer ces chiffres?

Y at-il une meilleure méthode pour le faire?

Mise à jour: Que diriez-vous Matlab

Était-ce utile?

La solution

Si vous avez besoin de précision infinie vous besoin de quelque chose qui est appelé BigInteger. Cependant, ces classes sont généralement utilisés pour les calculs scientifiques (et généralement impropres à stroring les données) qui ne semble pas vraiment correspondre à votre exemple de code. Si vous devez faire seulement calculs généraux utilisent des chaînes, puis les convertir en décimal pour les calculs.

Toutefois, si vous êtes à la recherche d'une telle classe BigInterger vous pouvez trouver un .

.Net 4.0 aura un BigInteger intégré en classe dans les bibliothèques de classes nommées System.Numerics.BigInteger.

Autres conseils

Vous n'êtes pas vraiment « ajouter » des chiffres. Vous Concaténation.

les stocker sous forme de chaînes. Vous ne pouvez pas obtenir beaucoup plus précis que cela.

Si vous devez effectuer des opérations arithmétiques, il est assez facile de les convertir en un nombre décimal à la volée.

Je ne suis pas vraiment pourquoi vous utilisez une clé dans le cadre d'un certain nombre, mais en laissant de côté que ... System.Decimal (aka decimal) semble être le bon outil pour le travail ici.

Eh bien, en fonction de la précision que vous essayez d'atteindre, vous pouvez probablement enregistrer comme une paire de noreferrer valeurs décimales .

Cependant, si cela est un code ASCII, vous pouvez simplement souhaitez enregistrer comme une chaîne directement. Cela évitera les problèmes de précision numérique, surtout si vous allez retirer le 104111 ... avant d'utiliser ces informations.

Il semble que vous stockez une « clé », alors pourquoi ne pas utiliser une chaîne alors?

nombres à virgule flottante sont par nature imprécises. Je ne suis pas sûr de ce que cette « configuration initiale » est ou pourquoi il est un flotteur, mais tu ne vas pas être en mesure de virer de bord sur une « clé utilisateur » (quel qu'il soit) et le récupérer plus tard. Conservez la clé utilisateur séparément, dans une chaîne ou quelque chose.

Si ces « chiffres » n'a pas de valeur numérique, à savoir que vous ne serez pas les utiliser pour le calcul mathématique alors il n'y a pas besoin de les stocker dans un type de données numérique. Vous pouvez les stocker sous forme de chaînes.

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