在评估检查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;。
答案 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");
}