Beim Versuch, Zahlen in englische Wörter umzuwandeln, tritt ein Fehler bei Zahlen wie 190000009 auf, was fälschlicherweise der Fall ist umgerechnet in „einhundertneunzig Millionen“. Die letzte Ziffer, „9“, fehlt im Ergebnis.
Das Problem liegt an den Nullen innerhalb der Zahl. Wenn die triConvert-Funktion auf drei aufeinanderfolgende Nullen trifft, gibt sie die Zeichenfolge „dontAddBigSufix“ zurück. Dadurch wird das Programm angewiesen, den Begriff für die entsprechende Einheit (z. B. Tausend, Million, Milliarde) wegzulassen, wenn Suffixe an die Zifferngruppierungen angehängt werden.
Im Fall von 190000009 lösen die drei mittleren Nullen die Rückgabe von „ aus. dontAddBigSufix“ für die zweite Gruppe von drei Ziffern, die den Millionenwert darstellt. Infolgedessen wird das Suffix „Million“ nicht hinzugefügt und in der endgültigen Ausgabe wird die letzte Ziffer übersprungen.
Das folgende Codesegment veranschaulicht das Problem:
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 } }
Die Lösung besteht darin, zu prüfen, ob der entsprechende bigNumArry-Wert „Million“ ist oder nicht. Wenn dies der Fall ist und finlOutPut[b] den Wert „dontAddBigSufix“ hat, sollte finlOutPut[b] durch eine leere Zeichenfolge anstelle eines Leerzeichens ersetzt werden. Dadurch wird sichergestellt, dass das Suffix „Million“ nicht hinzugefügt wird, wenn in der Mitte der Zahl Nullen stehen.
Das obige ist der detaillierte Inhalt vonWarum führt die Umwandlung von Zahlen wie 190000009 in englische Wörter dazu, dass die letzte Ziffer „9' fehlt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!