double to int conversion总是导致0

时间:2015-02-24 23:06:56

标签: java

我正在尝试将一个java double转换为一个总是导致0的int。我已经将值打印到控制台以尝试更好地了解可能发生的事情,尽管它没有帮助

4.849401383433042E-10< - 存储为双倍的值。

0< - 尝试强制转换为int后的结果。

我试图通过int i =(int)myDouble;

进行转换

感谢。

3 个答案:

答案 0 :(得分:6)

4.849401383433042E-10类似于科学记数法。该值相当于4.849401383433042 * 10 -10 ,或0.0000000004849401383433042。

当您将其转换为int时,narrowing primitive conversion rules指定将该值舍入为0以产生int,因此结果为0

  

否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值V,使用IEEE 754舍入为零的模式(第4.2.3节)向零舍入。

如果没有E-10部分,则不会导致54

答案 1 :(得分:2)

值4.849401383433042E-10相当于0.0000000004849401383433042。

当这被转换为整数时,该值变为0.请记住,整数转换不会进行任何类型的舍入,它们只取小数之前的值。例如,检查以下代码。

double x = 9.99999;
int x_int = (int) x;

System.out.println("X is: " + x_int);

打印出来:

X是9

另外要记住整数除法之类的事情。检查以下代码:

int i = 3 / 5;
double j = 3.0/5.0;

System.out.println("I is: " + i + "\n" + "J is: " + j);

打印出来:

我是:1 ​​

J是:1.4

答案 2 :(得分:-2)

尝试使用Java提供的Integer类。

Double dblObject = new Double(myDouble);

int cast = dblObject.intValue();