我正在尝试将一个java double转换为一个总是导致0的int。我已经将值打印到控制台以尝试更好地了解可能发生的事情,尽管它没有帮助
4.849401383433042E-10< - 存储为双倍的值。
0< - 尝试强制转换为int后的结果。
我试图通过int i =(int)myDouble;
进行转换感谢。
答案 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
部分,则不会导致5
,4
。
答案 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();