低于操作员也评估相等的值

时间:2014-04-16 09:46:10

标签: java operators

在评估检查Float是否小于特定值的条件时遇到一些奇怪的行为。

    String s = "3700.7777";

    System.out.println(Float.parseFloat(s));

    if(Float.parseFloat(s) < 3700.7777){

        System.out.println("Hi");

    }

尽管&#39>的价值很高。与条件中的值相同,代码仍打印&#34;嗨&#34;。 由于我使用的是小于运算符,我的理解是,对于任何等于或大于3700.7777的值,条件将失败并且不会打印&#34;嗨&#34;。

3 个答案:

答案 0 :(得分:2)

将您的条件更改为:

if(Float.parseFloat(s) < 3700.7777f) {
                                  ↑

有关详细信息,请参阅Primitive Data Types - float

您也可能想知道What Every Computer Scientist Should Know About Floating-Point Arithmetic

答案 1 :(得分:1)

请与附加f字面值进行比较,将其视为浮点值。现在它将该数字视为double

if (Float.parseFloat(s) < 3700.7777f) {

            System.out.println("Hi");

}

答案 2 :(得分:0)

猜猜我会使用Double而不是Float。这解决了我的问题。

    String s = "3700.7777";

    System.out.println(Double.parseDouble(s));

    if(Double.parseDouble(s) < 3700.7777){

        System.out.println("Hi");

    }