基本的java逻辑表达式不正确

时间:2016-05-08 18:00:22

标签: java

此代码应该在第一次返回Long。但它返回一个Double。它必须是基本的东西,但我无法找到它。 (在调试器中,使用evaluate a line命令,它按预期工作。)

我错过了什么?

import java.math.BigDecimal;

public class WeirdResult {

    public static void main(String[] args) {

        Number num = valueOf("1");
        System.out.println("this first one should be a Long");
        System.out.println("1 - class = " + num.getClass() + ", value = " + num);

        num = valueOf("1.0");
        System.out.println("1.0 - class = " + num.getClass() + ", value = " + num);
    }

    public static Number valueOf(String strNumber) {

        Number num = isUseDecimal() ? new BigDecimal(strNumber) :
                (strNumber.indexOf('.') == -1 ? Long.valueOf(strNumber) : new Double(strNumber));
        return num;
    }

    private static boolean isUseDecimal() {
        return false;
    }

}

输出结果为:

这第一个应该是Long

1 - class = class java.lang.Double,value = 1.0

1.0 - class = class java.lang.Double,value = 1.0

我希望它是:

这第一个应该是Long

1 - class = class java.lang.Long,value = 1

1.0 - class = class java.lang.Double,value = 1.0

0 个答案:

没有答案