负面模式有什么用?
NumberFormat nf = NumberFormat.getPercentInstance(Locale.ITALY);
DecimalFormat df = (DecimalFormat)nf;
df.applyPattern("###,###.###;(###,###.###)");
System.err.println(df.format(-12.45));//output (12,45);
Run Code Online (Sandbox Code Playgroud)
它会在什么情况下有用?不仅仅是一个模块吗?
所以我想使用Decimal Format类来舍入数字:
double value = 10.555;
DecimalFormat fmt = new DecimalFormat ("0.##");
System.out.println(fmt.format(value));
Run Code Online (Sandbox Code Playgroud)
这里,变量value将四舍五入到2位小数,因为有两个#s.但是,我想要舍入value到未知的小数位数,由一个单独的整数表示numPlaces.有没有办法通过使用十进制格式化器来实现这一目标?
例如,如果numPlaces = 3和value = 10.555,则value需要四舍五入到小数点后3位
我正在对servlet进行ajax调用。我希望数据从servlet返回到jsp:
PrintWriter out = response.getWriter();
String isbn = (String) request.getParameter("isbn");
BookDetail bd = new BookDetail();
if(bd.ISBNFound(isbn)){
ArrayList<KitapData> Books = bd.LoadBooksByISBN(isbn);
Gson gson = new Gson();
String json = gson.toJson(Books);
response.setContentType("application/json");
System.out.print(json);
out.print(json);
}
Run Code Online (Sandbox Code Playgroud)
我在类路径中添加了GSon.jar。但是我遇到了一些错误:完整列表如下:我在这里缺少什么?
WARNING: StandardWrapperValve[Book_CheckISBN]: Servlet.service() for servlet Book_CheckISBN threw exception
java.lang.IllegalArgumentException: class java.text.DecimalFormat declares multiple JSON fields named maximumIntegerDigits
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:122)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72)
at com.google.gson.Gson.getAdapter(Gson.java:356)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:118)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72)
at com.google.gson.Gson.getAdapter(Gson.java:356)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:55)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60)
at com.google.gson.Gson.toJson(Gson.java:593)
at com.google.gson.Gson.toJson(Gson.java:572)
at com.google.gson.Gson.toJson(Gson.java:527)
at …Run Code Online (Sandbox Code Playgroud) 我需要仅在与零不同时显示浮点值的小数位.
如何使用正则表达式或DecimalFormat以这种方式格式化?
对于代码:
DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(locale);
df.applyPattern("#.##0,00");
Run Code Online (Sandbox Code Playgroud)
它抛出一个 IllegalArgumentException 并带有格式错误的模式“#.##0,00”的消息
这有什么问题?
编辑:我想使用 . 作为千位分隔符和 , 作为小数点。我知道这是倒退,但有一个案例,那就是他们想要的格式。
我正在使用 CRM REST Builder 来构建我的请求。我正在从中创建一个网络资源,我正在插入一条带十进制输入的记录。从十进制输入中输入数字时,会显示此错误:
由于输入格式字符串/数字与参数“IEEE754Compatible”false/true 之间的冲突,无法将值转换为目标类型“Edm.Decimal”。
请帮忙。
看来,HALF_EVEN舍入模式在Java中的工作方式不同DecimalFormat比BigDecimal.有什么办法DecimalFormat可以保持一致吗?
// Using BigDecimal scale
System.out.println("Big decimal scale (HALF_EVEN) of 21.255 ==> " + new BigDecimal("21.255").setScale(2, RoundingMode.HALF_EVEN));
System.out.println("Big decimal scale (HALF_EVEN) of 21.265 ==> " + new BigDecimal("21.265").setScale(2, RoundingMode.HALF_EVEN));
// Using DecimalFormat
DecimalFormat cdf = new DecimalFormat("#,##0.00");
cdf.setRoundingMode(RoundingMode.HALF_EVEN); // default anyway
System.out.println("Decimal format (HALF_EVEN) of 21.255 ==> " + cdf.format(21.255));
System.out.println("Decimal format (HALF_EVEN) of 21.265 ==> " + cdf.format(21.265));
Output:
Big decimal scale (HALF_EVEN) of 21.255 ==> 21.26
Big decimal scale (HALF_EVEN) …Run Code Online (Sandbox Code Playgroud) DecimalFormat当我要在回归后打印出系数时,我遇到了问题.
这是代码中遇到问题的部分;
DecimalFormat twoDForm = new DecimalFormat("0.00");
private double s(double d){
return Double.valueOf(twoDForm.format(d));
}
Run Code Online (Sandbox Code Playgroud)
这是eclipse中的错误信息;
Exception in thread "main" java.lang.NumberFormatException: For input string: "0,16"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.valueOf(Unknown Source)
at model.ARF2.s(ARF2.java:126)
at model.ARF2.printBestModel(ARF2.java:114)
at testing.testclass3.bestForecastingModel(testclass3.java:69)
at testing.testclass3.main(testclass3.java:36)
Run Code Online (Sandbox Code Playgroud)
如果有人对如何修复代码有任何激增,请告诉我.我想要系数上的两位小数.
谢谢
拉尔斯
我对将字符串解析为Double时遇到的这种特殊"错误"感到困惑.
我已经设置了NumberFormat属性和符号.
传递带有15位和2位小数的字符串(例如str = "333333333333333,33")并使用Number num = NumberFormat.parse(str)结果解析它时省略数字.
num的实际值是3.333333333333333E14.
它似乎与Strings一起使用所有1,2和4但是......
谁能开导我?
干杯恩里科
可能重复:
在double中移动小数位
为什么以下数字总和不等于0.4622?但0.46219999999999994
Double total = new Double(0.08) + new Double(0.0491) + new Double(0.3218) +
new Double(0.0113) + new Double(0.0); // = 0.46219999999999994
Run Code Online (Sandbox Code Playgroud)
我有一个检查用户输入的应用程序.
用户输入5个十进制数和一个总数.应用程序检查komma后面4位小数的所有5个数字的总和是否等于总数.
限制它给了我0.4621不等于0.4622.我不能使用DecimalFormat,因为它将它向上舍入.如果我明确地说,向下舍入,那么这种情况就会失败.
关于如何解决这个问题的任何建议?
decimalformat ×10
java ×9
double ×2
bigdecimal ×1
crm ×1
dataformat ×1
dynamics-365 ×1
dynamics-crm ×1
gson ×1
javascript ×1
regex ×1
rounding ×1
string ×1
sum ×1
text ×1