Jetez un oeil au code C#:Le formatage d'une valeur décimale .NET est différente en fonction de la façon dont il a été créé
decimal value1 = 1234M;
decimal value2 = 1234.00M;
Console.WriteLine(value1 == value2); // True
Console.WriteLine(value1); // 1234
Console.WriteLine(value2); // 1234.00
Quels sont qui les amènent à formater différemment les différences entre value1
et value2
(différent nombre de décimales)?
Ils sont des valeurs égales, donc j'attendre à ce qu'ils seraient formatés de la même manière. Est-ce que value2
stocke en quelque part quelque part que je l'ai créé avec deux décimales? Si oui, comment puis-je voir cela et changer cela?
décimal est un peu spécial, il est capable de garder une trace du nombre de chiffres significatifs de la valeur . Flotteur très différent et double. Donc, si vous ne spécifiez pas le nombre de chiffres que vous voulez dans la fraction, elle affichera autant de chiffres qu'elle le sait. –
"Je m'attendrais à ce qu'ils soient formatés de la même manière" De quelle façon vous attendez-vous? Vous attendez-vous à ce qu'il ajoute des chiffres significatifs à la première valeur ou les supprime de la seconde? –
@ DStanley Si deux valeurs sont égales, je pense qu'elles devraient se comporter de la même manière. Je ne m'inquiète pas vraiment comment ils sont formatés tant qu'ils sont cohérents. C'est juste inattendu; il me semble que je n'ai aucun moyen de savoir comment une valeur décimale sera formatée jusqu'à ce que je le fasse réellement. Si cela ne tenait qu'à moi, je ferais en sorte que la mise en forme par défaut fonctionne de la même manière que les types à virgule flottante - en supprimant tous les zéros non significatifs. –