我需要将float
乘以100
才能从€
转换为cents
。我遇到的问题是,大数字的值不能正确计算。
例如:
String aa = "1000009.00";
aa = aa.replaceAll(",", ".");
float bb = Float.parseFloat(aa);
bb=Math.round(bb*100);
System.out.println(bb);
我得到的是:1.00000896E8
所以我知道这是因为Java中float
的工作方式。
我找了一个答案,但人们总是说"使用Math.round()
"这对我不起作用。
我该怎么做才能防止这种情况发生?
答案 0 :(得分:0)
您可以使用BigDecimal::multiply
例如:
String aa = "1000009.00";
aa = aa.replaceAll(",", ".");
BigDecimal fullValue = new BigDecimal(aa);
System.out.println("full value = " + fullValue.multiply(new BigDecimal(100)));
<强>输出强>
full value = 100000900.00
答案 1 :(得分:0)
您可以使用double
获得更高的精确度(如果您希望使用非常大的数字,则使用BigDecimal
。)
String aa = "1000009.00";
double bb = Double.parseDouble(aa);
bb=Math.round(bb*100);
System.out.printf("%.2f", bb); // it prints only two digits after the decimal point
<强>输出强>
100000900.00