Apabila cuba menukar nombor kepada perkataan Inggeris, pepijat timbul dengan nombor seperti 190000009, yang tersilap ditukar kepada "seratus sembilan puluh juta." Digit terakhir, "9," tiada daripada keputusan.
Masalahnya berpunca daripada sifar dalam nombor itu. Apabila fungsi triConvert menemui tiga sifar berturut-turut, ia mengembalikan rentetan "dontAddBigSufix." Ini mengarahkan program untuk meninggalkan istilah untuk unit yang sepadan (cth., ribu, juta, bilion) apabila melampirkan akhiran pada kumpulan digit.
Dalam kes 190000009, tiga sifar tengah mencetuskan pengembalian " dontAddBigSufix" untuk kumpulan kedua tiga digit, yang mewakili nilai juta. Akibatnya, akhiran "juta" tidak ditambahkan dan output akhir melangkau digit terakhir.
Segmen kod berikut menunjukkan isu:
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 } }
Penyelesaian adalah untuk menyemak sama ada nilai bigNumArry yang sepadan ialah "juta" atau tidak. Jika ya, dan finlOutPut[b] sama dengan "dontAddBigSufix," maka finlOutPut[b] hendaklah digantikan dengan rentetan kosong dan bukannya ruang. Ini memastikan bahawa akhiran "juta" tidak ditambah apabila terdapat sifar di tengah nombor.
Atas ialah kandungan terperinci Mengapakah penukaran nombor seperti 190000009 kepada perkataan Inggeris mengakibatkan kehilangan digit terakhir '9'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!