• 締切済み

数字を読みに変換する方法について

Javaにおいて、数字を読みに変換する方法をどなたかご存知ありませんか? 例えば、数字の 117 を one hundred and seventeen というように変換したいのです。 よろしくお願いします。

みんなの回答

回答No.2

頭の体操として面白そうだったのでちょっと作ってみました。英語には興味ないので漢数字に変換するものを作りました。まぁつくりが分かればいいと思うので。 なんにせよ、結構泥臭い地道な作業になることは間違いないと思います。Java5.0以上で動作します。 /* * 作成日: 2006/07/12 * */ package ちょっとしたツール; /** */ public class 数字を漢数字に2 { static String[] 漢数字 = { "", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; static String[] 漢数字桁1 = { "", "十", "百", "千" }; static String[] 漢数字桁2 = { "", "万", "億", "兆", "京" }; public static void main(String[] args) { int 変換したい数値 = 31234450; String 漢数字値 = ""; if (変換したい数値 == 0) { System.out.println("零"); return; } int 変換したい数値の桁数 = (int) StrictMath.log10(変換したい数値); for (int i = 変換したい数値の桁数; i >= 0; i--) { int 注目する桁 = (int) Math.pow(10, i); int 注目する桁の数字 = 変換したい数値 / 注目する桁; 漢数字値 = 漢数字値 + 漢数字[注目する桁の数字]; if (i % 4 != 0) { 漢数字値 = 漢数字値 + 漢数字桁1[i % 4]; } else { 漢数字値 = 漢数字値 + 漢数字桁2[i / 4]; } 変換したい数値 = 変換したい数値 - 注目する桁の数字 * 注目する桁; } System.out.println(漢数字値); } }

全文を見る
すると、全ての回答が全文表示されます。
  • meenie
  • ベストアンサー率44% (40/90)
回答No.1

ぱっと思いついたアプローチは桁数と数字の対応表を作成しておき、入力文字列を解析、変換という流れです。 {"","one","two","three",・・・,"nine"} 3n-2桁目、3n桁目はここから選び変換 {"","","twenty","thirty",・・・,"ninety"} 3n-1桁目はここから選び変換 {"ten","eleven","twelve","thirteen","fourteen",・・・,"nineteen"} 3n-1桁目が1の時はこちらから選ぶ。 3n桁はhundredをつける 4桁ならthousand、7桁ならmillion、・・・ 1. 入力された数字列をStringで逆順に格納(1234なら4321) 2. 一文字取得する。 桁数++ (4) 3. 次の文字があるので取得。桁数++ (43) 4. 次の文字があるので取得。桁数++ (432) 5. 3つたまったら解析、変換 1桁目が4なので fore 5.1 2桁目が3なので thirty 5.2 3桁目が2なので two。桁数が3なので hundred を付加。 5.3 併せて two hundred thirty fore の文字列を保存。 6. 2に戻り、1文字取得。桁数++ (1) 7. 次の文字が無いので解析、変換 1桁目が1なのでone。桁数が4なので thousand を付加。 8. one thousand two hundred thirty fore の文字列を保存して出力。

yamagata-hiroshi
質問者

お礼

なるほど、処理の流れがよく分かりました。 丁寧な回答どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルの関数でできますか?数字をスペル化

    数字をスペル化をエクセルの関数でできますか? 例えば 134 は ONE HUNDRED AND THIRTY THREE というような表示変換です。 日本語でよくにた、1 は 壱 に変換はできる ようなのですが。

  • 英語の数字の表され方

    one hundred and nine thousandを算用数字で書く場合の考え方がイマイチ分かりません。 考え方のご教授お願いします。

  • 数字の読み方おしえてください

    こんにちは。 仕事(貿易)で、書類上で数字をどうしても言葉で 確認、記入しなければならない (「12」であれば書類上「twelve」と 言葉で書かなくてはいけない)のですが、 数字の読み方をおしえてください。 貿易で海外よりインボイスがきて、USD1122.00 =US DOLLARS ELEVEN THOUSAND AND TWENTY TWO ONLY. と書いてきたのですが、これあってますか? これってusd11022.00になるように おもうのですが。間違っていればただしいのを 教えてください。 たぶん、ELEVEN HUNDRED TWENTY TWOだとおもうのですが 自信がありません。(^^; ONE THOUSAND ONE HUNDRED TWENTY TWO といういいかたも正しいですが? また途中にANDを入れる際の法則とかありますか? よろしくおねがいいたします。

  • 英語の数字を算用数字にしてくださいお願いします

    thirteen million,one hundred thireen thousand,three hundred(and)thirteen

  • 数字の読み方

    最近英字新聞に目を通すようになったのですが、ハイフンで繋がれた数字の読み(例えば、the 1-2% level)が読めないことに気づきました。また十万ならone hundred thousandだとわかるのですが、637000などになると若干不安を感じます。ご存知の方、是非ご教授ください。

  • 英語の数字の読み方

    英語の数字の読み方を教えて頂きたく質問投稿させて頂きます。 millionまでの読み方です。 下記は適当に今考えた数字です。 例えば、923,609,614というものであれば、nine hundred and twenty three million, six hundred and nine thousand, six hundred and fourteen で当ってますでしょうか。 間違っていれば正しい読み方と大きい数字の読み方のコツをご教授下さい。 宜しく御願い致しますm(_ _)m

  • アメリカ人の金額の数字の読み方

    外資系金融で働いています。よくアメリカ人のお客さんに英語で数字を読み上げなきゃいけない時があるのですが、そこで質問です。 人によって多少違うと思いますが、アメリカ人の一般的な数字の読み方(口頭)を教えてください。 例えば$1200という時にTwelve hundred dollarsと読むのが普通ですか?それともone thousand two hundred dollarsですか?勿論personal checkを書く時は後者なのは分かりますが口語だと前者ですか? 他にも¥102.34という時など私はどうしてもone-ou-two point thirty fourと言ってしまいがちなのですが、one hundred two point thirty fourという方がbetterでしょうか?112.90などもone twelve point ninetyと言いがちですが、正式にone hundred twelve point ninetyと読む方がいいですか? 現地に住まわれてる方などいたら教えてください。

  • 数字の読み方

    こんばんは. よろしくお願いいたします. 以下の数字は英語でなんというのでしょうか. (1) 2200 two thousands and two hundreds で良いでしょうか. (2)150,000 a hundred thousand and ten thousand で良いでしょうか. 英語が苦手です. よろしくお願いいたします.

  • 英語による数字表現方法のわかる辞書(ソフト)

    貿易の事務を担当することになったのですが、請求書、或いは領収書等に普通の算用数字ではなく英語で数字を書かないといけないと言う一般的でないシステムになっていて困っています。 hundred、Milllionなどの単発な表現なら書けるのですが例えば11,156,000円など細かい金額指定になるとどこで切ってどう表現していいのかさっぱりわかりません。こう言った英語による数字の表現方法が一覧で載っている辞書、参考書、或いはこう言う英語の表現に変換できるPCソフトをご存知の方、いらっしゃいましたら教えてください。

  • 英語の数字

    長文をやっていたら for the last one hundred thousand yearsとあって訳は過去の10万年だそうですが、英語の数字の考え方ってone hundred で100年でthousand yearsで1000年で、1000に0を2つ足して10万年でいいんでしょうか?これはもはや英語ではなく数学の問題になっているような・・・?この考え方であっていますか?どなたか教えてください。