我有给定小数位数的浮点值。在此示例中,小数点后两位。
例如:
33.3
134.45
从那些字符串中,我想具有以下整数:
3330
13445
我想使用我们预先知道小数位数的事实将这些字符串解析为等效的整数值。在此示例中,值为2,因此实际的float / double数需要乘以100。
我已经尝试了以下代码,但是它将33.3
解析为3329
而不是3330
。
这是我尝试过的代码:
public class HelloWorld{
public static void main(String []args){
int decimalDigits = 2;
String strNumber = "33.3";
double doubleNumber = Double.parseDouble(strNumber);
int intNumber = (int)(Double.parseDouble(strNumber) * (double)Math.pow(10,decimalDigits) );
System.out.println(strNumber);
System.out.println(doubleNumber);
System.out.println(intNumber);
}
}
这是结果:
$javac HelloWorld.java
$java -Xmx128M -Xms16M HelloWorld
33.3
33.3
3329
使用BigDecimal:
String res = new BigDecimal("33.3").multiply(new BigDecimal("10"))
.setScale(0, ROUND_UNNECESSARY)
.toPlainString()
为了保持精度,建议使用BigDecimal
:
BigDecimal
输出:
int decimalDigits = 2;
String strNumber = "33.3";
BigDecimal decimalNumber = new BigDecimal(strNumber);
int intNumber = decimalNumber.movePointRight(decimalDigits).intValue();
System.out.println(strNumber);
System.out.println(decimalNumber);
System.out.println(intNumber);