话不多说,先看代码。

    /**数字转中文 */
    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这个布尔值。

有想到的再补充,欢迎指出错误和探讨。

收藏 打印