把數字轉成英文 |
|
it1506
初階會員 發表:32 回覆:89 積分:49 註冊:2011-02-16 發送簡訊給我 |
[code delphi] function TForm1.amountEng(n: Currency): String; const highNumber :array[0..3] of String =(' HUNDRED',' THOUSAND',' MILLION',' BILLION'); engNumber :array[0..100] of string=( ,' ONE' ,' THREE' ,' FIVE' ,' SEVEN' ,' NINE' ,' ELEVEN' ,' THIRTEEN' ,' FIFTEEN' ,' SEVENTEEN' ,' NINETEEN' ,' TWENTY-ONE' ,' TWENTY-THREE' ,' TWENTY-FIVE' ,' TWENTY-SEVEN' ,' TWENTY-NINE' ,' THIRTY-ONE' ,' THIRTY-THREE' ,' THIRTY-FIVE' ,' THIRTY-SEVEN' ,' THIRTY-NINE' ,' FORTY-ONE' ,' FORTY-THREE' ,' FORTY-FIVE' ,' FORTY-SEVEN' ,' FORTY-NINE' ,' FIFTY-ONE' ,' FIFTY-THREE' ,' FIFTY-FIVE' ,' FIFTY-SEVEN' ,' FIFTY-NINE' ,' SIXTY-ONE' ,' SIXTY-THREE' ,' SIXTY-FIVE' ,' SIXTY-SEVEN' ,' SIXTY-NINE' ,' SEVENTY-ONE' ,' SEVENTY-THREE' ,' SEVENTY-FIVE' ,' SEVENTY-SEVEN' ,' EVENTY-NINE' ,' EIGHTY-ONE' ,' EIGHTY-THREE' ,' EIGHTY-FIVE' ,' EIGHTY-SEVEN' ,' EIGHTY-NINE' ,' NINETY-ONE' ,' NINETY-THREE' ,' NINETY-FIVE' ,' NINETY-SEVEN' ,' NINETY-NINE' g:=trunc(y/10000); y:=y-g*10000; eng:=eng engNumber[trunc(y/1000)] highNumber[1]; g:=trunc(y/100); y:=y-g*100; eng:=eng engNumber[trunc(y)]; eng:=eng ' AND CENT' engNumber[strtoint(formatfloat('0',z*100))]; //四捨五入, 不使用銀行界的四捨五入 roundto 函數 end; result:=eng; end; [/code]程式的作法是照英文寫作的方式, 英文就是 0~99, 百 ,千, 10千,百千, 千千=百萬; 程式內容很簡單,就是判斷該數字的位置(0~99, 百 ,千, 10千,百千), 再從陣列中找出對映的 英文字 , 是一種很直覺的做法 小數點是取到2位數, 主因是實際金額沒有到小數兩位以下. 我只做到百千,金額在百萬以下 超過的部分要再加程式 目前測試沒看到奇怪的結果... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |