华为面试---取近似值

来源:互联网 发布:网络购物用户行为报告 编辑:程序博客网 时间:2024/06/05 20:43

题目描述:

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

解题思路:

将输入的float值转化成字符,判断小数点后一位数值是否大于等于5,然后使用字符串的split函数去整数部分

代码实现:

import java.util.Scanner;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        float number = sc.nextFloat();        int outputNumber=0;        String numberStr = String.valueOf(number);        for(int i=1;i<numberStr.length();i++){            if(numberStr.charAt(i-1)=='.'&& numberStr.charAt(i)>='5'){                String numberInt[] = numberStr.split("\\.");                outputNumber = Integer.parseInt(numberInt[0])+1;            }            if(numberStr.charAt(i-1)=='.'&& numberStr.charAt(i)<'5'){                String numberInt[] = numberStr.split("\\.");                outputNumber = Integer.parseInt(numberInt[0]);            }        }        System.out.println(outputNumber);    }}

方法二:直接使用Java的四舍五入函数
import java.util.Scanner;import java.lang.*;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        float number = sc.nextFloat();        System.out.println(Math.round(number));    }}

方法三:强制将float转换成Int类型
import java.util.Scanner;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        float number = sc.nextFloat();        System.out.println((int)(number+0.5));//其实是double强制转int,因为0.5后面没有加f    }}