Java 如何将以点分隔的货币转换为以逗号分隔的数字
我有以下可能的输入值,以缩写方式表示:Java 如何将以点分隔的货币转换为以逗号分隔的数字,java,format,currency,csv,Java,Format,Currency,Csv,我有以下可能的输入值,以缩写方式表示: 39.44美元 0.523美元 1.336美元 我想将其转换为: 39440000美元 523000美元 1336000美元 我更喜欢使用通用方法,而不是构建奇怪的字符串,因此我尝试使用DecimalFormat(java)对象,尽管我没有得到期望的结果。感谢您的帮助 你是说像这样吗 String[] values = "$39.44,£0.523,€1.336".split(","); for (String value : values) {
- 39.44美元
- 0.523美元
- 1.336美元
- 39440000美元
- 523000美元
- 1336000美元
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
不要把钱当作替身。有些值对不能用double(或float)表示的货币有效 这似乎是一种合理的技术:
org.apache.commons.lang.StringUtils.strip(stringName,“$”)
将执行此操作基本上你所要做的就是用点替换逗号,用逗号替换点 以下代码将“$2400.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();
}
}
公共类DotsToCommas{
公共静态void main(字符串[]args){
字符串dotCurrency=“$2400.35”;
字符串commaCurrency=inverseCommasanddots(点货币);
系统输出打印LN(通信);
}
公共静态字符串逗号和点(字符串点字符串){
StringBuffer outputBuffer=新的StringBuffer();
对于(int i=0;i
谢谢大家的建议和计算。我遇到了这个解决方案:
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;
}
}
输入:
- 39.44
- 0.523
- 1.336
- 七,
- 125
- 39440000美元
- 523000美元
- 1336000美元
- 700万美元
- 125000000美元