話不多說,先看代碼。
/**數字轉中文 */
private DigitToChinese(digit: number): string
{
let chnNum = ["零","一","二","三","四","五","六","七","八","九"];
let chnNumUnit = ["","十","百","千"];
let tmp = "";
let chnString = "";
let zero = true;
let unitIndex = 0;
let isTen = false;
if(digit > 9 && digit < 20)
{
isTen = true;
}
while(digit > 0)
{
let num = digit % 10;
if(num === 0)
{
if(!zero)
{
zero = true;
chnString = chnNum[num] + chnString;
}
}
else
{
zero = false;
if(isTen && unitIndex == 1)
{
tmp = "";
}
else
{
tmp = chnNum[num];
}
tmp += chnNumUnit[unitIndex];
chnString = tmp + chnString;
}
unitIndex++;
digit = Math.floor(digit / 10);
}
return chnString;
}
這裏面比較特別的一點就是10-19,一般中文寫作十,十九,而不會寫作一十,一十九,所以多了可個isTen這個布爾值。
有想到的再補充,歡迎指出錯誤和探討。