这可能看起来像是一个重复的问题,但我在下面的所有链接中都尝试了,不能得到一个适当的答案。
无法将给定对象格式化为数字组合框
DecimalFormat twoDForm = new DecimalFormat("#.##");
double externalmark = 1.86;
double internalmark = 4.0;
System.out.println(String.valueOf((externalmark*3+internalmark*1)/4));
String val = String.valueOf((externalmark*3+internalmark*1)/4);
String wgpa1=twoDForm.format(val); // gives exception
String wgpa2=twoDForm.format((externalmark*3+internalmark*1)/4)); // works fine
System.out.println(wgpa1);
如果有任何数学计算,那么使用java.math.BigDecimal类的方法是更好的选择,因为结果准确,性能高效,偶数太大。使用java.math.BigDecimal代码:
double externalmark1 = 1.86;
double internalmark2 = 4.0;
System.out.println(String.valueOf((externalmark1*3+internalmark2*1)/4));
System.out.println("------------------------");
BigDecimal decimalValue1 = new BigDecimal((externalmark1*3+internalmark2*1)/4).setScale(2, RoundingMode.HALF_UP);
System.out.println("aggregatemark [direct decimalValue]: "+decimalValue1.toString());
System.out.println("------------------------");
double aggregatemark = (externalmark1*3+internalmark2*1)/4;
System.out.println("aggregatemark [double]: "+aggregatemark);
BigDecimal decimalValue2 = new BigDecimal(aggregatemark).setScale(2, RoundingMode.HALF_UP);
System.out.println("aggregatemark [decimalValue]: "+decimalValue2.toString());
System.out.println("------------------------");
String aggregatemarkStr = String.valueOf((externalmark1*3+internalmark2*1)/4);
System.out.println("aggregatemark [string] : "+aggregatemarkStr);
BigDecimal decimalValue3 = new BigDecimal(aggregatemarkStr).setScale(2, RoundingMode.HALF_UP);
System.out.println("aggregatemark [decimalValue]: "+decimalValue3.toString());
问题内容: 但是我没有错。这是我的代码 该方法采用Object类型参数,因此这就是为什么我传递了一个给出异常的String对象的原因 线程“主”中的异常java.lang.IllegalArgumentException:无法 将给定对象格式化为数字。 但是,当我给出double值作为参数时,程序运行良好。但是,如果使用类型实参定义该方法,为什么在传递a 时却得到异常而在传递时却没有得到异常? 问
问题内容: 我正在尝试使用DecimalFormat格式化价格,但这不适用于所有版本。 版画 和 但是“ 7.79999”的格式设置为“ 7.8”,而不是“ 7.80”。我尝试过这种方式 强制两个dp,但是“ 85.0”的格式设置为“ 85.00”而不是“ 85”! 有没有一种方法可以捕获所有变化,以便将价格打印为#,##或#。##?例如: 5、55、5.55、5.50、500、500.40 问题
问题内容: 我用这种格式记录日期 我需要将其转换为 我尝试过这种方式 但是我在运行时遇到这个异常 谁能帮我解决这个问题。 问题答案: 试试这个 另外,请注意这是几分钟,而几个月是。
我有这个格式的日期(2012-11-17T00:00:00.000-05:00)。我需要将日期转换成这种格式MM/YYYY。 我试过这个方法,但我得到了这个例外。 请看下面我的代码:
我有一个yyyyMMdd格式的字符串,我想要DD.MM.YYYY 我的代码出现了这个错误 java.lang.IllegalArgumentException:无法将给定对象格式化为日期 有人帮忙吗?