Maison > développement back-end > C++ > Pourquoi la conversion de flotteurs en entiers en C# produit-elle des résultats différents selon la méthode ?

Pourquoi la conversion de flotteurs en entiers en C# produit-elle des résultats différents selon la méthode ?

Susan Sarandon
Libérer: 2025-01-08 17:22:40
original
532 Les gens l'ont consulté

Why Do Casting Floats to Ints in C# Produce Different Results Depending on the Method?

Différences dans la conversion des nombres à virgule flottante en entiers en C# : la méthode de conversion affecte les résultats

En C#, l'arithmétique à virgule flottante peut avoir un comportement inattendu lors de la conversion du résultat en nombre entier. Considérez l'extrait de code suivant :

int speed1 = (int)(6.2f * 10);
float tmp = 6.2f * 10;
int speed2 = (int)tmp;
Copier après la connexion

Théoriquement, speed1 et speed2 devraient produire la même valeur, mais étonnamment, les résultats sont différents :

<code>speed1 = 61
speed2 = 62</code>
Copier après la connexion

Pourquoi cela se produit-il ?

Le nœud du problème est l'arithmétique à virgule flottante, qui peut introduire des erreurs d'arrondi. Dans (int)(6.2f 10), la valeur 6.2f 10 (environ 61,999998) est tronquée à un entier, ce qui donne 61.

En revanche, dans int speed2 = (int)tmp, la valeur 6,2f * 10 est d'abord arrondie à la valeur à virgule flottante la plus proche, qui est 62. Cette valeur arrondie est ensuite convertie en un entier, ce qui donne 62.

Pour garantir un comportement prévisible, il est généralement recommandé d'utiliser Math.Round ou des fonctions similaires pour les opérations d'arrondi, plutôt que de s'appuyer sur des conversions implicites.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal