數字轉英文

出自ProgWiki
跳至導覽 跳至搜尋

Crystal Reports版本

  • Crystal Reports 公式欄位用(以下的範例是先統計DataTable2.dt2_SumOfMoney,再數字轉英文)
Local numberVar SumOfMoney := int(sum({DataTable2.dt2_SumOfMoney}));
Local stringVar strTotal := '';
Local stringVar array StrNO := MakeArray('One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Eleven','Twelve','Thirteen','Fourteen','Fifteen','Sixteen','Seventeen','Eighteen','Nineteen');
Local stringVar array StrTens := MakeArray('Ten','Twenty','Thirty','Forty','Fifty','Sixty','Seventy','Eighty','Ninety');
Local stringVar array StrUnit := MakeArray('Hundred','Thousand','Million','Billion','Trillion');
 
if ((Log(SumOfMoney)/Log(10)) > 15) then
(
    '數值溢位'
)
else
(
    Local numberVar x := int(SumOfMoney);
    Local numberVar Lv := 0;
    While (x > 0) Do
    (
        Local numberVar m1000 := int(x mod 1000);    //0~999
        Local numberVar m100 := int(m1000 mod 100);  //0~99
        Local numberVar m10 := int(m1000 mod 10);    //0~9
 
        Local numberVar x3 := int(m1000 / 100);      //百位
        Local numberVar x2 := int(m100 / 10);        //十位
 
        if (Lv > 0) then
        (
            strTotal := StrUnit[Lv+1] + ' ' + strTotal;
        );
 
 
        if (m100 > 0) then
        (
            if (m100 <= 19) then
            (
                strTotal := StrNO[m100] + ' ' + strTotal;
            )
            else
            (
                if (m10 > 0) then
                (
                    strTotal := StrTens[x2] + ' ' + StrNO[m10] + ' ' + strTotal;
                )
                else
                (
                    strTotal := StrTens[x2] + ' '+ strTotal;
                );
            );
        );
 
 
        If (x3 > 0) Then 
        (
            strTotal := StrNO[x3] + ' ' + StrUnit[1] + ' ' + strTotal;
        );
 
 
        x := int(x / 1000);   
        Lv := Lv + 1;
    );
 
    ''+strTotal
);

VB6版本

其他