大略来说答案是可以的,但是须要转换。
虽然doublelong都是64位,但是由于存储的办法不一样,double的范围要大于long的范围,以是double的值不能直接存在long变量中。

要想把double的值转换为long,办法有两种:

一种便是大略地将double值通过转换来赋给long变量,如果是基本数据类型的double,可以直策应用逼迫转换,如果是Double(包装类),可以调用 longValue() 方法。
这种直接转换的办法,会把小数部分全部省略掉,而把整数部分赋值给long变量。
比如15.9转换为long后是15,129.20转换之后是129。

jsp中double转longJava编程中是否可以将一个double的值赋给一个long变量 SQL

double a = 15.9; long b = (long) a; // b = 15 Double c = 129.20; long d = c.longValue();// d = 129

第二种方法是利用Math.round()方法将double四舍五入为最靠近的整数。
比如15.9转换为long后是16,129.20转换之后是129。

double a = 15.9; long b = Math.round(a); // b = 16 Double c = 129.20; long d = Math.round(c);// d = 129

选择哪种,实际上取决于要对浮点值进行的处理。

末了这里要提醒大家,java.lang.Match.round() 的算法为将被打算的数字加上 0.5 后向下取整,以是 Math.round(10.5) 的结果为 11,而 Math.round(-10.5) 的结果为 -10。