Pour déplacer une décimale dans un double, vous pouvez instinctivement multiplier par 0,1. Cependant, cela peut introduire des erreurs d'arrondi, car 0,1 n'est pas une représentation exacte en binaire.
Au lieu d'utiliser 0,1, il est préférable d'utiliser 100, qui peut être représenté avec précision en binaire. Pour déplacer une décimale, divisez simplement par 100 :
double x = 1234; x /= 100;
Même avec cette approche, une erreur d'arrondi est toujours présente en raison des limitations de la virgule flottante représentation. Double.toString() effectue certains arrondis, mais éviter complètement les arrondis nécessite souvent l'utilisation de BigDecimal.
Notez que x / 100 et x * 0.01 ne sont pas identique en termes d’erreur d’arrondi. L'erreur d'arrondi dans la première expression dépend de la valeur de x, tandis que le 0,01 dans la seconde a une erreur d'arrondi fixe. Cela peut conduire à des résultats différents dans certains cas.
Comprendre les limites de la représentation à virgule flottante et utiliser des techniques appropriées peuvent garantir une gestion précise des décimales en double, minimisant ainsi les erreurs d'arrondi qui peuvent résultent d'opérations de multiplication imprécises.
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!