我有以下可能的输入值,以缩写的方式表示:
我想将其转换为:
我更喜欢使用通用方法而不是构建奇怪的字符串,所以我尝试使用DecimalFormat(java)对象,尽管我没有得到理想的结果。任何帮助表示赞赏。
答案 0 :(得分:1)
你的意思是这样吗?
String[] values = "$39.44,£0.523,€1.336".split(",");
for (String value : values) {
char ccy = value.charAt(0);
double amount = Double.parseDouble(value.substring(1));
System.out.printf("%s => %s%,d%n", value, ccy, (int)(amount * 1e6));
}
打印
$39.44 => $39,440,000
£0.523 => £523,000
€1.336 => €1,336,000
答案 1 :(得分:1)
基本上你所要做的就是用点替换逗号,用逗号替换点。
以下代码将“$ 2,400.25”更改为“$ 2.400.25”。如果您再次通过此方法发送虚线货币,您将获得逗号版本。这是一个简单的倒置。
public class DotsToCommas {
public static void main(String[] args) {
String dotCurrency = "$2,400.35";
String commaCurrency = invertCommasAndDots(dotCurrency);
System.out.println(commaCurrency);
}
public static String invertCommasAndDots(String dotString) {
StringBuffer outputBuffer = new StringBuffer();
for (int i = 0; i < dotString.length(); i++) {
if (dotString.charAt(i) == '.')
outputBuffer.append(',');
else if (dotString.charAt(i) == ',')
outputBuffer.append('.');
else
outputBuffer.append(dotString.charAt(i));
}
return outputBuffer.toString();
}
}
答案 2 :(得分:0)
不要把钱代表双倍。有些货币对货币有效,不能用双(或浮点数)表示 这似乎是一种合理的技术:
org.apache.commons.lang.StringUtils.strip(stringName, "$.")
将执行此操作答案 3 :(得分:0)
谢谢大家的建议和数学。我遇到了这个解决方案:
public class convertMillions {
public static void main(String[] args) {
String currency = "$";
char delimiter = ´,´;
String value = "39.44"; //Example
String commaCurrency = convert(value, currency, delimiter);
System.out.println(commaCurrency);
}
public String convert(String value, String currency, char delimiter) {
boolean zeroValue = value.isEmpty();
if(zeroValue)
return " "; //Used when String is empty
/*Convert into plain String number*/
double amount = Double.parseDouble(value.substring(0));
String numberStr = String.valueOf((int)(amount * 1e6));
/*Append unit (group separator) delimiter and currency*/
double number = Double.valueOf(numberStr);
String pattern = "###,###";
DecimalFormat formatter;
DecimalformatSymbols dfs = new DecimalFormatSymbols(Local.US);
dfs.setGroupingSeparator(delimiter);
formatter = new DecimalFormat(pattern, dfs);
String cypher = formatter.format(number);
String money = currency.concat(cypher);
return money;
}
}
<强>输入:强>
<强>输出:强>