簡體   English   中英

Java:將 Double 轉換為字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM