最近在学习技术,在使用到java.util.Scanner时遇到了个问题: 问题描述:在使用float fNum = scanner.nextFloat()读取值时,如果输入的值超过8位,读取时会【异常】被截取,导致读取的值和输入的值不符,如果输入时,在值的后面加上"F"或"f",会导致float fNum = scanner.nextFloat()读取报错;
鄙人现在在学java技术,自己也想了下,这个问题是不是可以通过scanner.next()方法先读为String类型的值,然后再在这个String字符串后面手动加个"F"或"f",然后再转换成float类型的值,正在尝试,不知各路大仙是否还有更好的办法呢,我想这个太麻烦了呀!
换成Scanner类的nextDouble()的方法,如果还不够,就直接按字符串读取,然后用Float包装类实例化。
float精度是有限的,所以要根据具体需求,选择float还是double。
Float包装类也解决不了,刚刚试了下:
1 String str; 2 Scanner sc = new Scanner(System.in); 3 4 str = sc.next(); 5 Float float1 = Float.parseFloat(str); 6 System.out.println(float1);
应该是Scanner这个类的局限性,不纠结了
不过,换了个数据类型Double,也差不多解决了,Double型的接收的数据位数能达到15位差不多;
谢谢这位好心的朋友!