当我想将String数组中的值解析为BigDecimal时出现此错误:
Exception in thread "main" java.text.ParseException: Unparseable number: "86400864008640086400222"
我在互联网上搜索解决方法如何解决这个问题。也许你们知道吗?
使用BigDecimal不是我的想法,但不幸的是我必须这样做。我创建了一些代码,它应该将值从String更改为BigDecimal并返回它:
public static BigDecimal parseCurrencyPrecise (String value) throws ParseException
{
NumberFormat format = NumberFormat.getCurrencyInstance ();
if (format instanceof DecimalFormat)
((DecimalFormat) format).setParseBigDecimal (true);
Number result = format.parse (value);
if (result instanceof BigDecimal)
return (BigDecimal) result;
else {
// Oh well...
return new BigDecimal (result.doubleValue ());
}
}
尝试解析时,这是我的代码:
public void Function() throws ParseException {
String [] array;
array=OpenFile().split("\\s");
for(int i = 10 ;i < array.length; i+= 11) {
BigDecimal EAE = parseCurrencyPrecise(array[i]);
System.out.println(EAE);
}
}
OpenFile函数用数据打开文件,并以这种方式读取此文件的临时+ temp + =&#34; &#34 ;; 这就是为什么我用\ s分裂的原因。这对我来说对弦乐和整数有用,但是我遇到了BigDecimal的问题。
问候,
答案 0 :(得分:3)
您可以使用BigDecimal(String val)
构造函数,而不是自己处理解析。来自Javadoc
BigDecimal(String val)
Translates the string representation of a BigDecimal into a BigDecimal
例如:
BigDecimal bigDecimal = new BigDecimal("86400864008640086400222");
有关构造函数采用的格式,请参阅Javadoc。
答案 1 :(得分:2)
你有什么理由不能使用构造函数吗?看起来你正在使它变得更加复杂。这对我有用:
System.out.println(new BigDecimal("86400864008640086400222"));