在不重新分配给新变量的情况下,将java的小数点四舍五入到两位
我有下面的代码,其中我需要将数值打印到小数点后两位,去掉数字中的点(.)。 然而,有时它打印到小数点后两位,有时最多三位在不重新分配给新变量的情况下,将java的小数点四舍五入到两位,java,decimal,Java,Decimal,我有下面的代码,其中我需要将数值打印到小数点后两位,去掉数字中的点(.)。 然而,有时它打印到小数点后两位,有时最多三位 public class CheckSubString3 { public static void main(String[] args) { Double[] d={134344.00d,234434.08d,234434.02d}; for(int i=0; i<d.length; i++){ Sy
public class CheckSubString3 {
public static void main(String[] args) {
Double[] d={134344.00d,234434.08d,234434.02d};
for(int i=0; i<d.length; i++){
System.out.println((d[i])*(25)/100);
System.out.println(parseLonggetFormattedAmount((d[i])*(25)/100));
System.out.println();
}
}
private static String parseLonggetFormattedAmount(double d) {
DecimalFormat format = (DecimalFormat) NumberFormat
.getInstance(new Locale("en", "gb"));
format.setMinimumFractionDigits(2);
FieldPosition f = new FieldPosition(0);
StringBuffer s = new StringBuffer();
String value = format.format(d, s, f).toString().replace(',', ' ')
.replace('.', ' ');
return value.replaceAll(" ","");
}
}
根据,您可以使用setMaximumFractionDigits(int newValue)
设置数字小数部分允许的最大位数
只需将其放入函数中parseLonggetFormattedAmount(双d)
:
似乎您只想将double乘以100,然后四舍五入到最接近的整数。所以你的方法可以写成:
private static String parseLonggetFormattedAmount(double d) {
return String.valueOf(Math.round(d * 100));
}
哪些产出:
33586005860852
5860851
听起来不错。但它也应该四舍五入到小数点后两位
format.setMaximumFractionDigits(2);
private static String parseLonggetFormattedAmount(double d) {
return String.valueOf(Math.round(d * 100));
}