java中double到Float类转换中的差异

java中double到Float类转换中的差异,java,casting,floating-point,type-conversion,Java,Casting,Floating Point,Type Conversion,我正在尝试下面的代码,但在执行344741.79后,值显示为344741.78 表示小数点后的.79转换为.78,我真想知道为什么转换后得不到完全相同的值,以及是哪个逻辑在这样做 public static void main(String[] s) { double a = 344741.79; System.out.print(new Float(a)); } Float仅保证准确存储。在344741.79的情况下,最接近的两个浮点数是344741.78125(打印为344

我正在尝试下面的代码,但在执行
344741.79
后,值显示为
344741.78

表示小数点后的
.79
转换为
.78
,我真想知道为什么转换后得不到完全相同的值,以及是哪个逻辑在这样做

public static void main(String[] s) {
    double a = 344741.79;
    System.out.print(new Float(a));
}

Float
仅保证准确存储。在344741.79的情况下,最接近的两个
浮点数是344741.78125(打印为
344741.78
)和344741.8125(打印为
344741.8
)。

在Java中从
双精度
转换为
浮点数
时会失去一些精度。虽然这里可能是这样,也可能不是这样,在编译过程中,当从Java源代码文本转换为
double
(也不能表示所有小数点)时,也会丢失精度。如果需要精度,则应使用BigDecimal类谢谢您的答案和时间:)如果您对答案满意,请单击勾号接受答案。