题是1003Hangover ,非常简单 http://acm.pku.edu.cn/JudgeOnline/problem?id=1003
我的代码是
import java.util.*;
import java.io.*;public class Main1003 {
public static void main(String[] args) throws Exception {
Scanner sca = new Scanner(System.in);
while(true) {
float f = sca.nextFloat();
float length = 0.0f;
int cardsNum = 0;

if(f == 0.0 ) return;
if(f >= 5.199 || f <=0.0) break;
while(length < f) {
cardsNum++;
length += (float)1/(1+cardsNum);
}

System.out.println(cardsNum + " card(s)"); }
}
}
题目是要求输入在0.00到5.20之间,我用f>=5.20的时候输入5.20还能出来输出结果,但是我用5.19的时候输入5.19直接返回。无奈我用了5.199这个娄来保证程序可以正确执行。能不能有人告诉我这是为什么?是我哪里写错了还是这是java浮点数精度问题啊?