Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Integer和Double类型的对象分开_Java - Fatal编程技术网

Java 将Integer和Double类型的对象分开

Java 将Integer和Double类型的对象分开,java,Java,我想把一个数字除以100,这个数字是对象类型的 Object a = 33; Object b = .33; Double d = (Double) a / 100; Double e = (Double) b / 100; 首先,我将类型转换为Double,但整数的“cannotcastnumericalvalue to java.lang.Double”失败 我需要在划分前检查实例吗?我是新手,不确定什么是正确的方法 编辑:我无法避免对象您需要使用双倍而非对象 final in

我想把一个数字除以100,这个数字是对象类型的

Object a = 33;
Object b = .33;


Double d = (Double) a / 100;
Double e = (Double) b / 100;
首先,我将类型转换为Double,但整数的“cannotcastnumericalvalue to java.lang.Double”失败

我需要在划分前检查实例吗?我是新手,不确定什么是正确的方法


编辑:我无法避免对象

您需要使用双倍而非对象

    final int a = 33;
    final double b = 0.33;
    final double d = a / 100.0;
    final Double e = b / 100.0;
如果您必须使用对象(我建议您不要使用,原因有很多),您可以这样做

Number a = 33;
Number b = 0.33;

Number d = a.doubleValue() / 100.0;
Number e = b.doubleValue() / 100.0;
但是,在以下情况下,您应该只对数字使用对象

  • 该值可以是
    null
  • 您将其用作泛型类型,例如
    List
  • 您使用的类型没有基元,例如
    BigDecimal

在Java中,可以将int之类的原语强制转换为double,但不能对Integerdouble之类的包装类执行相同的操作

在您的示例中,33被自动装箱为整数,然后不能转换为双精度。在特定情况下,您可以通过以下方式避免异常:

    Object a = 33;

    if(a instanceof Number) {
        Double d = ((Number) a).doubleValue() / 100;
        System.out.println(d);
    }

但是没有最好的方法来解决你的问题。最好使用原语int和double,或者它们的包装器Integer和double,而不是Object

在进行数学运算时,不要使用包装类型。使用
double
,而不是
double
。在处理数字包装时,尽可能避免使用
Object
。您将遇到比您愿意解决的更多的问题。我无法避免Object,因为它已经用于多种数据类型。对否决票有什么解释吗?我应该删除这个问题吗?