Derzeit ist ein rudimentärer Mechanismus vorhanden, um Zahlen mithilfe statischer Arrays und in Wörter umzuwandeln Übersetzen Sie sie basierend auf der Größe der Zahl in einen englischen Text. Allerdings stößt dieser Ansatz bei außergewöhnlich großen Zahlen auf Herausforderungen.
<br>10183 = Zehntausendeinhundertdreiundachtzig<br>90 = Neunzig<br>5888 = Fünftausendachthundertachtzig acht<br>
Gibt es in einer der Mathematikbibliotheken eine einfache Funktion, die für diesen Zweck verwendet werden kann?
Hier ist der Code, ich glaube nicht, dass es in SE irgendeine Methode gibt.
Im Wesentlichen wandelt eine Zahl in eine Zeichenfolge um, analysiert sie und verknüpft sie mit ihrem Gewicht.
Zum Beispiel
<br>1000<br>< /pre></p> <p>1 wird als Tausenderposition behandelt und 1 wird auf „Eins“ und Tausender fällig abgebildet an seine Position.</p> <p>Hier ist der Code von der Website:</p> <p><strong>Englisch</strong></p> <p><pre class="brush:php;toolbar:false"><br>import java.text.DecimalFormat ;</p> <p>öffentliche Klasse EnglishNumberToWords {</p> <p>privates statisches Finale 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 statische Zeichenfolge konvertierenLessThanOneThousand(int number) {
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 number) {
// 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", " ");
}
/**
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
ganz anders als die englische Version, aber Französisch schon viel schwieriger!
<br>Paket com.rgagnon.howto;</p> <p>import java.text.*;</p> <p>class FrenchNumberToWords {<br> private static final String[] 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",
Das obige ist der detaillierte Inhalt vonBietet die Standard-Mathematikbibliothek von Java eine Funktion zum Konvertieren von Zahlen in ihre Wortdarstellungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!