用程序將阿拉伯數字轉換成英文


在英語中怎么描述數字呢? 例如1314520.可以翻譯 one million three hundred and fourteen thousand five hundred and twenty.

拿上面的數字來舉例.million是一百萬,one million就顯而易見羅.而我們看下面的,three hundred and fourteen thousand,直面翻譯起來的意思是 314千(三百一十四千).奇怪,百萬后面的單位不是萬嗎?怎么會是千,
這里就是英語中的數詞單位與中文不同.英文中數詞的單位是 百(hundred),千(thousand),百萬(million),十億(billion),所以萬就是:ten thousand,十萬:one hundred thousand,依次類推.下面貼出一些不同數字的翻譯.

56               fifty six  
156             one hundred and fifty six (經典百位數讀法,百位+單位+and+個位數)
2156           two thousand one hundred and fifty six      
32156          thirty two thousand one hundred and fifty six (千位數讀法,單位使用thousand)
532156        five hundred and thirty two thousand one hundred and fifty six
4532156      four million five hundred and thirty two thousand one hundred and fifty six(百萬,單位使用million)

那么問題來了,我想寫個程序,能自動將阿拉伯數字轉成英文,該怎么轉呢?
任何能用電腦模擬人腦的程序都是有一定規律.仔細想想,任何事從一定角度看都是規律的.
多研究研究可以得出,是三個進位一分的,例如百(hundred),千(thousand),百萬(million),十億(billion)以三個為一組,可以這樣拆一下 |1|314|520|.首位是百萬,所以是one million. 百萬后面是314,單位是千,是:three hundred  and fourteen thousand. 然后是百位數:five hundred and twenty.再把三組放在一起就是正確翻譯了.其實唯一的區別只是后面單位不同,其他的按照百位數讀法就好了呀.所以我一開始的思路是按照這樣展開的.
1>考慮到英語中前20個數字都使用了不同的單詞,以及100以內的零整之間也是不同的單詞,所以需要先把所有用到的單詞放在一個Map集合里面.



2>使用subString從輸入的數字中從后往前截取三位數字,轉化成百位數的讀法,加上不同的單位.然后循環這一周目,直到循環到末尾終止循環.這里需要考慮的情況是:

   1.如果當前數字不足三位的情況,如|1|234|.
   2.當前數數位有0.如1000005(one million and five).以及數位之間為0和為空的影響.
   3.當前數十位以后是否存在特殊的單詞.例如20在英語中作 twenty,30作thirty.
   4:最后二位位個數之前除了為0的情況一定要加"and".
   5:基本就這些,還有很多很多細節,寫的時候就會碰到.
然后就大功告成啦.仔細測試一下還不錯.



再來點難的:


寫程序就是這樣一點點探索,把大問題化小問題,化繁為簡,耐心解決.不說了,老大在后面看着呢,這樣玩不好,我要工作了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM