描述 | |
---|---|
知识点 | 函数 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个浮点数值 |
输出 | 输出该数值的近似整数值 |
样例输入 | 5.5 |
样例输出 | 6 |
/*这道题用了两种方法解答,两种方法测试一些负数值时,会得到不同的答案,但是在华为OJ上面都显示答案正确,说明OJ平台也还是有很多问题。
* 方法1:由于将float强制转型为int时,只要不是整数,就都会把小数去掉,这样当为正数时,值会变小,是负数时,值会变大
* 所以先判断正负,但是OJ平台好像判断负数时,-1.1变为2,-1.5也变为2,所以要跟正数不相同的处理
*
* 方法2:直接调用Math.round()方法,可以将double或者float类型转为int型,但是该方法,处理正负数都是统一策略,即-1.5=-1,-1.6=-2,
* 所以两种方法得到的最终结果会有不同,但是OJ平台都判断是正确。
*
* */
import java.util.Scanner;
public class QuJinSiZhi {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float input = scanner.nextFloat();
method_1(input);
System.out.println();
method_2(input);
scanner.close();
}
static void method_1(float input) {
int output = (int) input;
if (input >= 0) {
if (input + 0.5 >= (int) (output + 1)) //当小数大于0.5,则输出结果在int转型后的结果上加1
System.out.print(output + 1);
else
System.out.print(output);//当小数小于0.5,则直接输出int转型的结果
} else {
if (-input % 1 != 0)
System.out.print(output - 1);
else
System.out.print(output);
}
}
static void method_2(float input) {
int output = Math.round(input); //Math.rount()方法源码也是使用(int)( n + 0.5)的方法进行转型
System.out.print(output);
}
}