2014-04-16 89 views
0

在评估检查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”。

缺少什么我在这里?任何帮助?

+2

'3700.7777'是一个'double'。编辑:你应该避免测试浮点数是否相等,除非你非常小心,并确切知道它们是如何工作的(你不这样做,我不这样做,绝大多数程序员都不知道)。 – immibis

+0

“*即使's'的值与条件*”=>中的值相同吗? – assylias

+1

检查是否为'if(Float.parseFloat(s)== 3700.7777f)'条件工作? – Himanshu

回答

1

请与附加文字f进行比较,将其视为浮点值。现在,它是治疗这一数字为double

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

      System.out.println("Hi"); 

} 
0

想我会用,而不是浮动双。这解决了我的问题。

String s = "3700.7777"; 

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

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

     System.out.println("Hi"); 

    } 
相关问题