在评估检查 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 .
关于java - 小于运算符也评估相等值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23105724/