[英]Java: Converting Double to String of Words
我正在讀取文件中的行數。 我有這個雙倍的可能最后一行不完整。 我需要將行數輸出為一串單詞。 這樣做的好方法是什么?
Double 850.25
去“八百五十零四行”
從 double 到 String :
String doubleInString = "" + double;
或者更打算這樣做:
String.valueOf(double)
@DwB
那是你要的嗎 ?
從 String 到 double :
try
{
Double.parseDouble(myString)
}catch( Exception e )
{
// what you want in case of error
}
從 double 到 word :
你可以使用 RuleBasedNumberFormat 但我從來沒有試過這么好運氣:)
這是你的答案。 認為它可能會有所幫助。
public class CashWordConverter {
public static final String[] units = {
"", " one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen", "eighteen", "nineteen"
};
public static final String[] tens = {
"", // 0
"", // 1
"twenty", // 2
"thirty", // 3
"forty", // 4
"fifty", // 5
"sixty", // 6
"seventy", // 7
"eighty", // 8
"ninety" // 9
};
public static String doubleConvert(final double n) {
String pass = n + "";
StringTokenizer token = new StringTokenizer(pass, ".");
String first = token.nextToken();
String last = token.nextToken();
try {
pass = convert(Integer.parseInt(first))+" ";
pass=pass+"POINT";
for (int i = 0; i < last.length(); i++) {
String get=convert(Integer.parseInt(last.charAt(i)+""));
if(get.isEmpty()){
pass=pass+" "+"ZERO";
}else{
pass=pass+" "+get;
}
}
} catch (NumberFormatException nf) {
}
return pass;
}
public static String convert(final int n) {
if (n < 0) {
return "minus " + convert(-n);
}
if (n < 20) {
return units[n];
}
if (n < 100) {
return tens[n / 10] + ((n % 10 != 0) ? " " : "") + units[n % 10];
}
if (n < 1000) {
return units[n / 100] + " hundred " + ((n % 100 != 0) ? " " : "") + convert(n % 100);
}
if (n < 1000000) {
return convert(n / 1000) + " thousand " + ((n % 1000 != 0) ? " " : "") + convert(n % 1000);
}
if (n < 1000000000) {
return convert(n / 1000000) + " million " + ((n % 1000000 != 0) ? " " : "") + convert(n % 1000000);
}
return convert(n / 1000000000) + " billion " + ((n % 1000000000 != 0) ? " " : "") + convert(n % 1000000000);
}
}
Update (Mahbubur Rahman Khan) response,
Conversion of the second part will be better.
public static String doubleConvert(final double n) {
if (n == 0d) {
return "0.0";
}
String pass = n + "";
StringTokenizer token = new StringTokenizer(pass, ".");
String first = token.nextToken();
String last = token.nextToken();
try {
pass = convert(Integer.parseInt(first)) + " ";
pass = pass + "point";
if (Integer.parseInt(last) > 0){
pass = pass + " " + convert(Integer.parseInt(last));
} else {
pass = pass + " " + "zero";
}
} catch (NumberFormatException nf) {
// error infos
}
return pass.replace(" ", " ");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.