數字轉英文
出自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
);