Java,不可能将对象转换为浮动.....为什么?

2022-09-02 00:29:32

为什么这样做有效:

 Object prova = 9.2;
 System.out.println(prova);
 Double prova2 = (Double) prova;
 System.out.println(prova2);

这难道不是吗?

Object prova = 9.2;
System.out.println(prova);
Float prova2 = (Float) prova;
System.out.println(prova2);

我在我的java android应用程序中失去了1个小时,因为这个东西,所以我不得不把它扔成一个双倍,而不是双精度在一个浮子,或者我有一个例外


答案 1

因为您在编写时依赖于自动装箱

Object prova = 9.2;

如果你想让它成为一个浮点,试试

Object prova = 9.2f;

请记住,java.lang.Float 和 java.lang.Double 是同级类型;常见的类型是java.lang.Number

如果要以任何格式表示数字,请使用 API,例如 Number.floatValue()


答案 2

因为 是 ,而 Double 不是 Float 的子类型provaDouble

你可以从浮点文字开始:(在这种情况下实际上是一个),或者,你可以这样:9.2fprovaFloat

Float prova2 = ((Double) prova).floatValue();