Lors de la tentative de conversion de nombres en mots anglais, un bug survient avec des nombres tels que 190000009, ce qui est erroné converti en « cent quatre-vingt-dix millions ». Le dernier chiffre, « 9 », est absent du résultat.
Le problème vient des zéros dans le nombre. Lorsque la fonction triConvert rencontre trois zéros consécutifs, elle renvoie la chaîne « dontAddBigSufix ». Cela demande au programme d'omettre le terme pour l'unité correspondante (par exemple, mille, millions, milliards) lors de l'attachement de suffixes aux groupes de chiffres.
Dans le cas de 190000009, les trois zéros du milieu déclenchent le retour de " dontAddBigSufix" pour le deuxième groupe de trois chiffres, qui représente la valeur en millions. Par conséquent, le suffixe « million » n'est pas ajouté et le résultat final ignore le dernier chiffre.
Le segment de code suivant illustre le problème :
for (b = finlOutPut.length - 1; b >= 0; b--) { if (finlOutPut[b] != "dontAddBigSufix") { finlOutPut[b] = finlOutPut[b] + bigNumArry[bigScalCntr] + ' , '; bigScalCntr++; } else { //replace the string at finlOP[b] from "dontAddBigSufix" to empty String. finlOutPut[b] = ' '; bigScalCntr++; //advance the counter } }
La solution est de vérifier si la valeur bigNumArry correspondante est "million" ou non. Si c'est le cas et que finlOutPut[b] est égal à "dontAddBigSufix", alors finlOutPut[b] doit être remplacé par une chaîne vide au lieu d'un espace. Cela garantit que le suffixe « million » n'est pas ajouté lorsqu'il y a des zéros au milieu du nombre.
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!