如何将带有句点和逗号的字符串转换为 int,例如
String a "9.000,00"
int b = Integer.parseInt(a);
当我运行此代码时,我收到一条错误消息:Exception in thread "main" java.lang.NumberFormatException: For input string: "9.000,00"
获得结果900000
那么只需删除所有,
并.
并解析它,例如使用 Integer.parseInt
或 Long.parseLong
或者如果数字可以很大,甚至可以更好地使用BigInteger
。
String a = "9.000,00";
BigInteger bn = new BigInteger(a.replaceAll("[.,]", ""));
System.out.println(bn);
输出:900000
但是,如果您想将9.000,00
解析为9000
(其中,00
部分是小数),那么您可以将NumberFormat
与使用类似于您的输入的形式Locale.GERMANY
一起使用:123.456,78
String a = "9.000,00";
NumberFormat format = NumberFormat.getInstance(Locale.GERMANY);
Number number = format.parse(a);
double value = number.doubleValue();
//or if you want int
int intValue = number.intValue();
System.out.println(value);
System.out.println(intValue);
输出:
9000.0
9000
final String a = "9.000,00";
final NumberFormat format = NumberFormat.getInstance(Locale.GERMAN); // Use German locale for number formats
final Number number = format.parse(a); // Parse the number
int i = number.intValue(); // Get the integer value
参考
为此,您需要使用 java.text.NumberFormat
和 NumberFormat.getInstance(Locale.FRANCE)
(或其他兼容Locale
)
import java.text.NumberFormat;
import java.util.Locale;
class Test {
public static void main(String[] args) throws Exception {
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
String a = "9.000,00";
a = a.replaceAll("\.", "");
Number number = format.parse(a);
double d = number.doubleValue();
int c = (int) Math.floor(d);
System.out.println(c);
}
}
随心所欲地打印9000
(现在是int
)!
如果我打印每个中间步骤:
import java.text.NumberFormat;
import java.util.*;
class test {
public static void main(String[] args) throws Exception {
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
String a = "9.000,00";
a = a.replaceAll("\.", "");
System.out.println(a); // prints 9000,00
Number number = format.parse(a);
System.out.println(number); // prints 9000
double d = number.doubleValue();
System.out.println(d); // prints 9000.0
int c = (int) Math.floor(d);
System.out.println(c); // prints 9000
}
}
所以如果你想要 Okem 9000,00
正如你在评论中所说的那样,你只需要
a = a.replaceAll("\.", "");
System.out.println(a);
这为您提供了9000,00
的输出
我希望这有所帮助。
试试这个 -
String a = "9.000,00";
a = a.replace(",","");
a = a.replace(".","");
int b = Integer.parseInt(a);
我认为DecimalFormat.parse是Java 7 API的方式:
String a = "9.000,00";
DecimalFormat foo = new DecimalFormat();
Number bar = foo.parse(a, new ParsePosition(0));
之后,你去对你刚刚得到的数字感到满意。
如果您希望答案是 900000(这对我来说没有意义,但我正在回复您的问题)并将其放入 int 中:
int b = Integer.parseInt(a.replaceAll(",","").replaceAll("\.",""));
如评论中所述。