【发布时间】:2020-04-17 23:35:09
【问题描述】:
我有给定小数位数的浮点值。在本例中为小数点后 2 位。
例如:
33.3
134.45
我想从这些字符串中获得以下整数:
3330
13445
我想利用我们预先知道小数位数的事实将这些字符串解析为等效的整数值。在此示例中为 2,因此实际的浮点数/双精度数需要乘以 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
【问题讨论】:
-
解析为双倍,乘以 100,然后舍入为整数。或者读取字符串,找到句点,删除它,并根据需要附加零、一个或两个零,以确保句点后面有两位数,然后解析为整数。
标签: java math floating-point precision