ホームページ > Java > &#&チュートリアル > Java の標準数学ライブラリには、数値を単語表現に変換する関数が提供されていますか?

Java の標準数学ライブラリには、数値を単語表現に変換する関数が提供されていますか?

Mary-Kate Olsen
リリース: 2024-12-30 11:14:19
オリジナル
397 人が閲覧しました

Does Java's standard math library offer a function to convert numbers to their word representations?

Java で数値を単語に変換する方法

背景

現在、静的配列と数値を使用して数値を単語に変換する基本的なメカニズムが用意されています。数字の大きさに基づいてそれらを英語のテキストに翻訳します。ただし、このアプローチでは、非常に大きな数値を伴う課題に直面します。

<br>10183 = 10,183<br>90 = 90<br>5888 = 5,0880 Eight<br>

質問

この目的に利用できる数学ライブラリの中に簡単な関数はありますか?

回答

これがコードです。SE にはメソッドがないと思います。

それ基本的に、数値を文字列に変換し、解析して、その重みに関連付けます。

例:

<br>1000<br>&lt ;/pre></p>
<p>1 は千の位として扱われ、1 は</p>
<p>Web サイトのコードは次のとおりです:</p>
<p><strong>English</strong></p>
<p><pre class="brush:php;toolbar:false"><br>import java.text.DecimalFormat;</p>
<p>public class EnglishNumberToWords {</p>
<p>private static Final String[] tensNames = {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">"",
" ten",
" twenty",
" thirty",
" forty",
" fifty",
" sixty",
" seventy",
" eighty",
" ninety"
ログイン後にコピー

};

private static Final String[] numNames = {

"",
" one",
" two",
" three",
" four",
" five",
" six",
" seven",
" eight",
" nine",
" ten",
" eleven",
" twelve",
" thirteen",
" fourteen",
" fifteen",
" sixteen",
" seventeen",
" eighteen",
" nineteen"
ログイン後にコピー

};

private EnglishNumberToWords() {}

private static String ConvertLessThanOneThousand(int 数値) {

String soFar;

if (number % 100 < 20){
  soFar = numNames[number % 100];
  number /= 100;
}
else {
  soFar = numNames[number % 10];
  number /= 10;

  soFar = tensNames[number % 10] + soFar;
  number /= 10;
}
if (number == 0) return soFar;
return numNames[number] + " hundred" + soFar;
ログイン後にコピー

}

public static String Convert(long 数値) {

// 0 to 999 999 999 999
if (number == 0) { return "zero"; }

String snumber = Long.toString(number);

// pad with "0"
String mask = "000000000000";
DecimalFormat df = new DecimalFormat(mask);
snumber = df.format(number);

// XXXnnnnnnnnn
int billions = Integer.parseInt(snumber.substring(0,3));
// nnnXXXnnnnnn
int millions  = Integer.parseInt(snumber.substring(3,6));
// nnnnnnXXXnnn
int hundredThousands = Integer.parseInt(snumber.substring(6,9));
// nnnnnnnnnXXX
int thousands = Integer.parseInt(snumber.substring(9,12));

String tradBillions;
switch (billions) {
case 0:
  tradBillions = "";
  break;
case 1 :
  tradBillions = convertLessThanOneThousand(billions)
  + " billion ";
  break;
default :
  tradBillions = convertLessThanOneThousand(billions)
  + " billion ";
}
String result =  tradBillions;

String tradMillions;
switch (millions) {
case 0:
  tradMillions = "";
  break;
case 1 :
  tradMillions = convertLessThanOneThousand(millions)
     + " million ";
  break;
default :
  tradMillions = convertLessThanOneThousand(millions)
     + " million ";
}
result =  result + tradMillions;

String tradHundredThousands;
switch (hundredThousands) {
case 0:
  tradHundredThousands = "";
  break;
case 1 :
  tradHundredThousands = "one thousand ";
  break;
default :
  tradHundredThousands = convertLessThanOneThousand(hundredThousands)
     + " thousand ";
}
result =  result + tradHundredThousands;

String tradThousand;
tradThousand = convertLessThanOneThousand(thousands);
result =  result + tradThousand;

// remove extra spaces!
return result.replaceAll("^\s+", "").replaceAll("\b\s{2,}\b", " ");
ログイン後にコピー

}

/**

  • テスト
  • @param args
    */

public static void main(String[] args) {

System.out.println("*** " + EnglishNumberToWords.convert(0));
System.out.println("*** " + EnglishNumberToWords.convert(1));
System.out.println("*** " + EnglishNumberToWords.convert(16));
System.out.println("*** " + EnglishNumberToWords.convert(100));
System.out.println("*** " + EnglishNumberToWords.convert(118));
System.out.println("*** " + EnglishNumberToWords.convert(200));
System.out.println("*** " + EnglishNumberToWords.convert(219));
System.out.println("*** " + EnglishNumberToWords.convert(800));
System.out.println("*** " + EnglishNumberToWords.convert(801));
System.out.println("*** " + EnglishNumberToWords.convert(1316));
System.out.println("*** " + EnglishNumberToWords.convert(1000000));
System.out.println("*** " + EnglishNumberToWords.convert(2000000));
System.out.println("*** " + EnglishNumberToWords.convert(3000200));
System.out.println("*** " + EnglishNumberToWords.convert(700000));
System.out.println("*** " + EnglishNumberToWords.convert(9000000));
System.out.println("*** " + EnglishNumberToWords.convert(9001000));
System.out.println("*** " + EnglishNumberToWords.convert(123456789));
System.out.println("*** " + EnglishNumberToWords.convert(2147483647));
System.out.println("*** " + EnglishNumberToWords.convert(3000000010L));

/*
 *** zero
 *** one
 *** sixteen
 *** one hundred
 *** one hundred eighteen
 *** two hundred
 *** two hundred nineteen
 *** eight hundred
 *** eight hundred one
 *** one thousand three hundred sixteen
 *** one million
 *** two millions
 *** three millions two hundred
 *** seven hundred thousand
 *** nine millions
 *** nine millions one thousand
 *** one hundred twenty three millions four hundred
 **      fifty six thousand seven hundred eighty nine
 *** two billion one hundred forty seven millions
 **      four hundred eighty three thousand six hundred forty seven
 *** three billion ten
 **/
ログイン後にコピー

}
}

Français
英語版とはかなり異なりますが、フランス語はかなり違いますもっと難しい!

<br>package com.rgagnon.howto;</p>
<p>import java.text.*;</p>
<p>class FrenchNumberToWords {<br> private static Final文字列[] dizaineNames = {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">"",
"",
"vingt",
"trente",
"quarante",
"cinquante",
"soixante",
"soixante",
"quatre-vingt",
"quatre-vingt"
ログイン後にコピー

};

private static Final String[] uniteNames1 = {

"",
"un",
"deux",
"trois",
"quatre",
"cinq",
"six",
"sept",
"huit",
"neuf",
"dix",
"onze",
"douze",
"treize",
"quatorze",
"quinze",
"seize",
"dix-sept",
"dix-huit",
"dix-neuf"
ログイン後にコピー

};

private static Final String[] UniteNames2 = {

"",
"",
"deux",
"trois",
"quatre",
ログイン後にコピー

以上がJava の標準数学ライブラリには、数値を単語表現に変換する関数が提供されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:Java 8 ラムダ式でチェックされた例外を処理する方法? 次の記事:HttpUrlConnection を使用して Java で HTTP リクエストを作成して送信するにはどうすればよいですか?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート