數字金額轉國字範例 |
|
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
最近忽然需要用到此函數。
結果找來找去都找不到。
最後還是自已寫了一個簡單的函數
各位測試看看吧... 月夜 光明 藍更愁
------
月夜 光明 藍更愁
附加檔案:34738_TwnMoney.exe
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
TNUM.ZIP
將一位數字轉換成一個國字數字的 Label 元件,如 0 轉成 BIG5 碼
"零" ( 附原始程式碼 ),作者 : 江謝迪。
http://vcl.vclxx.org/DELPHI/D32FREE/TNUM.ZIP
CT970126.ZIP
提供 BIG5 碼中文數字與阿拉伯數字互換等多個中文環境適用的函
數單元及範例 ( 附原始程式碼 ),作者:錢達智。
http://vcl.vclxx.org/DELPHI/D32FREE/CT970126.ZIP ---
--<-<-<@
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
#includeHAVE A NICE DAY FOR YOU |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
我提供另一種寫法給大家參考 請在此下宣告兩組常數
interface uses Classes, StdCtrls, DB, SysUtils, Windows....
const CMoney: array[0..9] of string = ('零','壹','貳','參','肆','伍','陸','柒','捌','玖');
const CMoneyType: array [0..10] of string = ('','元','拾','佰','仟','萬','拾','佰','仟','億','拾');
在 private 或 public 中宣告
function NTS(Value: string): string;
在實作中寫
Function NTS(Value: string): string; var tmplength: integer; tmpfare: string; i: integer;使用方式 Label1.Caption:= NTS('1234412'); 發表人 - P.D. 於 2003/08/01 22:49:56 |
marxtom
一般會員 發表:0 回覆:1 積分:0 註冊:2003-01-07 發送簡訊給我 |
|
fishstar
一般會員 發表:0 回覆:4 積分:0 註冊:2003-04-29 發送簡訊給我 |
我也來提供一種方式,看看大家覺得如何 //轉大寫副程式
Function ENum2CNum(ENum: integer): string;
var
wkNum1, wkNum2, wkNum3, wkUnit: string;
i, j, wkLength: integer;
wkZero: Boolean;
begin
wkZero := True;
wkNum1 := IntToStr(ENum);
wkLength := length(wkNum1);
j := 1;
for i := wkLength downto 1 do begin
wkNUm2 := '';
wkUnit := '';
case StrToInt(wkNum1[i]) of
0 : begin
if j = 5 then wkZero := True;
if wkZero then
wkNum2 := ''
else
wkNum2 := '零';
if wkLength = 1 then wkNum2 := '零';
end;
1 : wkNum2 := '壹';
2 : wkNum2 := '貳';
3 : wkNum2 := '參';
4 : wkNum2 := '肆';
5 : wkNum2 := '伍';
6 : wkNum2 := '陸';
7 : wkNum2 := '柒';
8 : wkNum2 := '捌';
9 : wkNum2 := '玖';
end;
if StrToInt(wkNum1[i]) <> 0 then wkZero := False; if (StrToInt(wkNum1[i]) <> 0) OR (j = 5) then begin
case j of
9 : wkUnit := '億';
8 : wkUnit := '仟';
7 : wkUnit := '佰';
6 : wkUnit := '拾';
5 : wkUnit := '萬';
4 : wkUnit := '仟';
3 : wkUnit := '佰';
2 : wkUnit := '拾';
1 : wkUnit := '';
end;
end;
wkNum3 := wkNum2 wkUnit wkNum3;
j := j 1;
end;
Result := wkNum3 ;
end;
|
chimera
初階會員 發表:62 回覆:78 積分:28 註冊:2003-03-22 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 問一個無關程式的問題, 像3003000你們認為是三佰萬零三仟正確還是三佰萬三仟正確?? 我到銀行的討論區去問,結果他們的回答是兩者皆可, 但是我想要的最formal的答案,我想知道你們的看法。其實這與學名及俗名一樣, 一般我們在說303萬, 口語化會說三佰零三萬這樣人家才聽得懂, 如果你告訴別人三佰三萬, 不覺得很奇怪嗎? 可是我們在寫金額時 大部份都會寫三佰三萬元, 因為如果你遇到這樣的數字30670405元, 如果按口語 翻譯的話, 那也很奇怪三仟零陸拾柒萬零肆佰零伍元, 很繞舌吧! 保證銀行會 @#$, 除非你的程式是這樣設計 仟 佰 萬 仟 佰 拾 元 就已經先印好的, 再用code填國字, 那你就真 的零的部份要填了 以上個人的經驗, 僅提供參考~~~~ 所以我提供的程式碼拿掉零的轉換 發表人 - P.D. 於 2003/08/02 11:32:03 |
lsu
一般會員 發表:1 回覆:14 積分:3 註冊:2003-03-11 發送簡訊給我 |
function TForm1.NumToWord(num:real):String;
Var
i,j:integer;
ss,tt,h:string; z:boolean;
Begin
z:=false;
j:=1;
if Form1.ToolButton3.Down
then tt:='[USD] '
else tt:='[CNY] ';
ss:=Formatfloat('0.00',num);
for i:=length(ss) downto 1 do
begin
h:=copy(ss,j,1);
if h='.' then begin inc(j);
continue;
end; //跳过小数点
case strtoint(h) of
0: if z then begin //上一位已经是零
inc(j);
if i=8 then begin tt:=copy(tt,0,length(tt)-2) '万零';
end ;
if i=4 then begin tt:=copy(tt,0,length(tt)-2) '圆零';
end ;
if i=1 then tt:=copy(tt,0,length(tt)-2) '整';
continue;
end
else
begin
z:=true;
tt:=tt '零';
if i=4 then begin tt:=copy(tt,0,length(tt)-2) '圆零'; end;
if i=1 then begin if ToolButton3.Down then tt:=copy(tt,0,length(tt)-2) '美分'
else tt:=copy(tt,0,length(tt)-2); end;
if i=8 then begin tt:=copy(tt,0,length(tt)-2) '万零'; end;
inc(j);
continue;
end;
1: begin tt:=tt '壹'; z:=false; end;
2: begin tt:=tt '贰'; z:=false; end;
3: begin tt:=tt '叁'; z:=false; end;
4: begin tt:=tt '肆'; z:=false; end;
5: begin tt:=tt '伍'; z:=false; end;
6: begin tt:=tt '陆'; z:=false; end;
7: begin tt:=tt '柒'; z:=false; end;
8: begin tt:=tt '捌'; z:=false; end;
9: begin tt:=tt '玖'; z:=false; end;
end;
case i of
1: if ToolButton3.Down then tt:=tt '美分' else tt:=tt '分';
2: if ToolButton3.Down then tt:=tt '拾' else tt:=tt '角';
4: tt:=tt '圆';
5: tt:=tt '拾';
6: tt:=tt '佰';
7: tt:=tt '仟';
8: tt:=tt '万';
9: tt:=tt '拾';
10: tt:=tt '佰';
11: tt:=tt '仟';
12: tt:=tt '亿';
end;
inc(j);
end;
result:=tt;
end;
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |