划分Integer和Double类型的对象

时间:2016-10-07 11:24:31

标签: java

我想将数字除以100,数字是对象类型。

Object a = 33;
Object b = .33;


Double d = (Double) a / 100;
Double e = (Double) b / 100;

首先,我将类型转换为Double,但是对于Integer来说,它无法“无法将数值转换为java.lang.Double”。

我需要在分割前检查实例吗?我是新手,不知道这是怎么回事?

编辑:我无法避免使用对象

3 个答案:

答案 0 :(得分:3)

如果你必须使用物品(我建议你不要因为多种原因),你可以这样做

Number a = 33;
Number b = 0.33;

Number d = a.doubleValue() / 100.0;
Number e = b.doubleValue() / 100.0;

但是,如果

,您应该只使用数字对象
  • 值可以是null
  • 您将其用作通用类型,例如List<Double>
  • 您正在使用的类型不具有原语,例如BigDecimal

答案 1 :(得分:2)

你需要使用双打而不是对象

    final int a = 33;
    final double b = 0.33;
    final double d = a / 100.0;
    final Double e = b / 100.0;

答案 2 :(得分:1)

在Java中,您可以将 int 等原语投射到 double ,但是您无法对 Integer 和加倍

在您的示例中,33被自动装箱到一个Integer,然后无法将其强制转换为Double。在特定情况下,您可以通过以下方式避免异常:

    Object a = 33;

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

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