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

    String s = "3700.7777";

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

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

        System.out.println("Hi");

    }


即使's'的值与条件中的值相同,该代码仍会打印“ Hi”。
由于我使用的是小于运算符,因此我的理解是,对于等于或大于3700.7777的任何值,该条件将失败并且不会显示“ Hi”。

最佳答案

将您的条件更改为:

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


有关更多信息,请参见Primitive Data Types - float

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

10-01 21:32