有没有一种方法可以将 Long
数据类型转换为 Double
或 double
?
例如,我需要将 15552451L
转换为 double
数据类型。
有没有一种方法可以将 Long
数据类型转换为 Double
或 double
?
例如,我需要将 15552451L
转换为 double
数据类型。
您可以简单地执行:
double d = (double)15552451L;
或者你可以通过Long对象获取double值,如下:
Long l = new Long(15552451L);
double d = l.doubleValue();
简单的类型转换?
double d = (double)15552451L;
15552451d
。 - Jon Freedman如前所述,您可以将长整型简单地转换为双精度浮点型。但要小心长整型到双精度浮点型的转换,因为在Java中,长整型到双精度浮点型是一种缩小转换。
从双精度浮点类型向长整型类型的转换需要将64位浮点值转换为64位整数表示。根据实际运行时值,可能会丢失信息。
例如,以下程序将打印1而不是0:
long number = 499999999000000001L;
double converted = (double) number;
System.out.println( number - (long) converted);
(long) converted
不是一个很好的答案示例,因为double -> long是一种缩小转换,根据定义,number - (long) converted
并不总是等于0。https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.3 - Antoniodouble result = Double.longBitsToDouble(15552451L);
long
具有相同位模式的double
。double nan = Double.longBitsToDouble(0xfff0000000000001L);
double positiveInfinity = Double.longBitsToDouble(0x7ff0000000000000L);
double negativeInfinity = Double.longBitsToDouble(0xfff0000000000000L);
(查看 Double.longBitsToDouble(long))
你也可以使用以下方法获取 long
值
long bits = Double.doubleToRawLongBits(Double.NaN);
long
转换为double
(我认为在使用Java时,强制转换是你学习的第一件事之一),也没有接受任何答案。也许他想要一个与long
值具有相同位模式的double
。好吧,我不知道。所以我只是给出了答案。 - pvorbLong i = 1000000;
String s = i + "";
Double d = Double.parseDouble(s);
Float f = Float.parseFloat(s);
我们可以通过将Long类型转换为Double或Float或Int来实现,因为将字符串值转换为Double或Float或Int非常容易。
long x = somevalue;
double y = Double.longBitsToDouble(x);
什么是“长日期”类型?
您可以将 long 强制转换为 double:
double d = (double) 15552451L;
我认为这对你有好处。
BigDecimal.valueOf([LONG_VALUE]).doubleValue()
Long
来实现,就不需要进行任何字符串解析:Long.valueOf(15552451L).doubleValue()
。请注意,这与从double
强制转换相同(在内部),除了你要进行一些自动/拆箱操作。 - Joe Kearneydouble d = 15552451L;
- cutemachine