格式化 BigDecimal 或不带小数点分隔符的数字
Format BigDecimal or Number without Decimal Separator
您好,我想打印一个带小数值但不使用小数点分隔符的数字。
例如:我有这个 275.1234 但我想要这个 027512(4 位 2 十进制,全部没有分隔符)
我尝试了两种方法:
DecimalFormat format = new DecimalFormat("0000.00");
DecimalFormatSymbols custom=new DecimalFormatSymbols();
custom.setDecimalSeparator('\u0000');
format.setDecimalFormatSymbols(custom);
System.out.println(format.format(new BigDecimal("275.1234")));
这打印我:0275 12(我知道我可以删除 space)
第二种方法:
String[] value = new BigDecimal("275.1234").toString().split("\.");
System.out.println(value[0] + value[1].substring(0,2));
This print me: 27512 (Bad I need That First 4 digits are filled with 0 if the question cannot have integer 4 digits)
Ex: 1,1234 ==> 000112
Ex: 10,5678 ==> 001056
Ex: 100,7877 ==> 010078
基本上我想要这个问题的更优雅的解决方案,有什么想法吗?
谢谢
伊格纳西奥
乘以 100 怎么样。
String text = String.format("%06.0f", Double.parseDouble("275.1234")*100);
或
String text = String.format("%06.0f", 275.1234 * 100);
或
String text = String.format("%06.0f", BigDecimal.valueOf(275.1234).doubleValue() * 100);
将text
设置为
027512
如果你想截断而不是舍入,你可以这样做
String text = String.format("%06d", (long) (1234.5678 * 100));
打印
123456
你也可以这样做
String value = "275.1234".replaceAll("\.", "").substring(0, 5) ;
您好,我想打印一个带小数值但不使用小数点分隔符的数字。
例如:我有这个 275.1234 但我想要这个 027512(4 位 2 十进制,全部没有分隔符)
我尝试了两种方法:
DecimalFormat format = new DecimalFormat("0000.00");
DecimalFormatSymbols custom=new DecimalFormatSymbols();
custom.setDecimalSeparator('\u0000');
format.setDecimalFormatSymbols(custom);
System.out.println(format.format(new BigDecimal("275.1234")));
这打印我:0275 12(我知道我可以删除 space)
第二种方法:
String[] value = new BigDecimal("275.1234").toString().split("\.");
System.out.println(value[0] + value[1].substring(0,2));
This print me: 27512 (Bad I need That First 4 digits are filled with 0 if the question cannot have integer 4 digits)
Ex: 1,1234 ==> 000112
Ex: 10,5678 ==> 001056
Ex: 100,7877 ==> 010078
基本上我想要这个问题的更优雅的解决方案,有什么想法吗?
谢谢 伊格纳西奥
乘以 100 怎么样。
String text = String.format("%06.0f", Double.parseDouble("275.1234")*100);
或
String text = String.format("%06.0f", 275.1234 * 100);
或
String text = String.format("%06.0f", BigDecimal.valueOf(275.1234).doubleValue() * 100);
将text
设置为
027512
如果你想截断而不是舍入,你可以这样做
String text = String.format("%06d", (long) (1234.5678 * 100));
打印
123456
你也可以这样做
String value = "275.1234".replaceAll("\.", "").substring(0, 5) ;