Java中的double和long是两种不同的数据类型,它们在数值表示和精度上有一些区别。 double是一种浮点数类型,可以表示带有小数点的数值,但是由于浮点数的特性,可能会存在一定的精度损失。它的表示范围很广,可以包含很大的数值。 long是一种整数类型,用于表示整数值,它的表示范围相对较小,但是可以保证表示的值是准确的,...
当你运行上述代码时,你可能会发现输出的double值并不是期望中的long值。这就是由于double的表示精度有限,导致了高位的整数位被舍弃或改变,从而出现了精度的丢失。 解决方法 对于重要的计算或需要保留准确值的场景,建议使用以下方法来避免精度丢失: 使用BigDecimal类:BigDecimal可以提供任意精度的计算,适用于财务计算或其他...
2.long可以准确存储19位数字,而double只能准备存储16位数字(实际测试,是17位,)。double由于有exp位,可以存16位以上的数字,但是需要以低位的不精确作为代价。如果一个大于17位的long型数字存到double上,就会丢失数字末尾的精度 3.如果需要高于19位数字的精确存储,则必须用BigInteger来保存,当然会牺牲一些性能。
最小值:Double.MIN_VALUE=4.9E-324 (2 的 -1074 次方) 最大值:Double.MAX_VALUE=1.7976931348623157E308 (2 的 1024 次方 -1) 当long 类型的数大于Integer.MAX_VALUE时,long 强制转换 int,就会出现丢失精度。转换过程是将 long 类型数值的二进制数从低位到高位截取 32 位,再将 32 位二进制数转为 int。
1. double类型:double是浮点类型,用于表示双精度浮点数。它通常使用64位来存储数据,其中包括符号位、指数位和尾数位,允许表示很大或很小的数值,并且能够提供相对较高的精度。其最大值大约是1.79E+308。2. long类型:long是长整型,用于表示非常大的整数。它同样使用64位来存储数据,但只表示整数...
1) 整型类型:byte(字节型)、short(短整型)、int(整型)、long(长整型) 2) 浮点类型:float(单精度)、double(双精度) 3) 字符类型:char 4) 布尔类型:boolean 针对基本类型,我们拿C/C++语言跟Java语言做个对比。C/C++支持无符号类型,而Java不支持无符号类型。除此之外,在C/C++中,基本类型的长度在不同编译器...
自然地,对于简单的计算而言,int是最常用的整数类型。如果你需要更大的数字范围,请参照下面的long。 2、double基本类型 与int不同,Java的双精度类型是64位浮点数,由double关键字表示: double someNumber = 110.55; 需要提醒的是,浮点数实际上就是实数。换句话说,双精度浮点数中包含小数点。
在自动类型转化中,除了以下几种情况可能会导致精度损失以外,其他类型的自动转换不会出现精度损失。 》int--> float 》long--> float 》long--> double 》float --> double 除了可能的精度损失外,自动转换不会出现任何运行时(run-time)异常。 强制转换 如果要把大的转成小的,或者在short与char之间进行转换,就...
byte:占用1个字节,范围是128至127。short:占用2个字节,范围是32768至32767。int:占用4个字节,范围是2147483648至2147483647,使用最为广泛。long:占用8个字节,具有更大的数值范围。浮点型:float:占用4个字节,精度为1.401298e45到3.402823e+38。double:占用8个字节,精度更高,范围更广,是未...