为什么转换基本数据类型会截断浮点值?

时间:2016-07-07 06:36:15

标签: java floating-point logic type-conversion

基本类型的转换最常用于将浮点值转换为整数。当我们这样做时,浮点值的小数部分被简单地截断。为什么?

public class Chaz {
            public static void main(String[] args) {
            double x = 1234.5678;
            long g = (long)x;
            System.out.println(g);
    }
}

2 个答案:

答案 0 :(得分:2)

来自docs,

  

长数据类型是64位二进制补码整数。签了   long的最小值为-2 ^ 63,最大值为2 ^ 63-1

它不存储小数精度值。请参阅here

答案 1 :(得分:0)

long代表长整数。我知道问题是数据丢失,但整数不能存储非整数。

可以决定存储数字的乘法,如下所示:

public class Chaz {
            public static void main(String[] args) {
            double x = 1234.5678;
            long g = (long)(x * 10000);
            System.out.println(g);
    }
}

然后知道g实际值是10000倍。或者,如果需要最接近的整数,则可以对其进行舍入。如果没有其他信息,我们无法分辨,但我们实际上可以告诉他们,这是一种正常和预期的行为。