Comment convertir une chaîne en nombre décimal avec 3 décimales?
string num = 23.6;
Je veux savoir comment puis-je le convertir en décimal avec 3 décimales
comme
decimal nn = 23.600
Est il une méthode?
Peut-être l'inverse?
stackoverflow.com/questions/6951335/...
l'utilisation de cette Chaîne.Format("{0:0.000}", decimalvalue)
il convertit une chaîne DE virgule décimale, À la chaîne...
stackoverflow.com/questions/6951335/...
l'utilisation de cette Chaîne.Format("{0:0.000}", decimalvalue)
il convertit une chaîne DE virgule décimale, À la chaîne...
23.6m == 23.600m
. Juste l'analyser en utilisant decimal.Parse
.OriginalL'auteur Bhavin Bhaskaran | 2015-06-10
Vous devez vous connecter pour publier un commentaire.
J'essaie de mon mieux..
Tout d'abord votre
string num = 23.6;
ne même de la compilation. Vous devez utiliser des guillemets avec vos chaînes commestring num = "23.6";
Si vous voulez obtenir ce que un
decimal
, vous devez analyser tout d'abord avec uneIFormatProvider
qui ont.
comme unNumberDecimalSeparator
commeInvariantCulture
(si votreCurrentCulture
utilise.
déjà, vous ne pas ont passé en deuxième paramètre);Maintenant, nous avons uneon dirait que ces sont pas vrai. Voir Jon Skeet commentaires sur cette réponse et de son "Maintien de zéros" de la section sur De virgule flottante .NET article.23.6
comme undecimal
valeur. Mais comme une valeur,23.6
,23.60
,23.600
et23.60000000000
sont totalement même, non? Peu importe lequel vous l'analyser pour en décimal, vous obtiendrez la même valeur qu'une23.6M
dans le débogueur.Maintenant? Oui, nous avons besoin pour obtenir textuelle représentation
23.600
. Depuis que nous avons besoin seulement le séparateur décimal en une représentation textuelle, Le"F"
Spécificateur de Format correspond des besoins.(Je sais que c'est deux ans plus tard...) ", Mais comme une valeur, 23.6, 23.60, 23.600 et 23.60000000000 sont totalement même, non?" Non, ils ne le sont pas.
decimal
conserve des zéros à la fin.Console.WriteLine(decimal.Parse("1.0"))
etConsole.WriteLine(decimal.Parse("1.00"))
faire des choses différentes.Hmm, si je comprends bien (je ne le pense pas, mais..), comme une "valeur", ils sont les mêmes.
decimal.Parse("1.0") == decimal.Parse("1.000000")
retournetrue
peu importe combien de zéros qu'ils ont. Mais, que voulez-vous dire "faire des choses différentes" dans votre phrase exactement? Est-ce le problème avec le "Maintien de zéros" sur votre article?Pour "faire des choses différentes", avez-vous essayez d'exécuter le code? Ils s'impriment "1.0" et "1.00" respectivement. Oui, le
==
opérateur ignorer l'échelle, mais en disant plusieurs valeurs sont "totalement" incorrects, il est facilement détectable différence entre ces valeurs, que vous avez juste à les convertir en chaînes. Et oui, c'est la première partie de la section "conserver les zéros" section de cet article.Et de la même façon "peu importe à qui, on vous l'analyser pour en décimal, vous obtiendrez la même valeur qu'une de 23,6 M dans le débogueur" est incorrecte si vous analyser "23.6", vous obtenez de 23,6 m. Si vous analyser "23.60" vous obtenez 23.60 m, etc. Le débogueur va vous montrer la différence entre ceux-ci.
OriginalL'auteur Soner Gönül
Il y a deux concepts différents ici.
vous pouvez avoir une valeur de 1 et de le voir comme 1.0 ou 1.0000 ou +000001.00.
vous avez chaîne 23.6. vous pouvez le convertir en décimal à l'aide de
var d = decimal.Parse("23.6")
vous avez maintenant une valeur égale à 23.6 vous pouvez l'afficher comme 23.600 en utilisant
d.ToString("F3")
vous pouvez lire plus sur la mise en forme des valeurs décimales
nn.ToString()
. Il ne montre pas23.6
mais23.600
. MSDN: "Le facteur d'échelle est également de préserver tout les zéros à droite dans un nombre Décimal. Les zéros à droite n'affectent pas la valeur d'un nombre Décimal en arithmétique ou d'opérations de comparaison. Cependant, les zéros de fin peut être révélé par la méthode ToString si une chaîne de format est appliqué."OriginalL'auteur Hamid Pourjam
la chose qui fonctionne pour moi dans mon cas est num.ToString("#######.###")
OriginalL'auteur M. Ali
Une virgule n'est pas une chaîne, il n'affiche pas les zéros de fin. Si vous voulez une chaîne qui affiche votre 3 décimales, y compris les zéros à droite, vous pouvez utiliser des chaînes de caractères.Format:
decimal
t affichage des zéros à la fin. Par exemple:Console.WriteLine(1.000m)
etConsole.WriteLine(1.0m)
impression 1.000 et 1.0).OriginalL'auteur LInsoDeTeh