首页 > 试题广场 >

取近似值

[编程题]取近似值
  • 热度指数:623468 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的正实数 x,输出其四舍五入后的整数。更具体地说,若 x 的小数部分大于等于 0.5,则输出向上取整后的整数;否则输出向下取整后的整数。

【提示】
\hspace{15pt}不同编译器版本、不同系统环境对待实数的精度处理不同,我们建议您使用在线编译器进行调试。

输入描述:
\hspace{15pt}输入一个小数点后位数不超过 5 位的实数 x\left(0 \lt x \leqq 20 \right)。保证实数不存在前导零和后导零。


输出描述:
\hspace{15pt}在一行上输出一个整数,代表 x 四舍五入后的结果。
示例1

输入

5.5

输出

6

说明

\hspace{15pt}在这个样例中,5.5 的小数部分大于等于 0.5,因此输出向上取整后的整数 6
示例2

输入

2.499

输出

2

说明

\hspace{15pt}在这个样例中,2.499 的小数部分小于 0.5,因此输出向下取整后的整数 2
//借鉴一位大佬优雅代码
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        float get=in.nextFloat();
        System.out.println((int)(get+0.5f));
    }
}

发表于 2025-05-30 16:33:50 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println((int)(in.nextDouble() + 0.5));
    }
}

发表于 2024-11-27 22:29:26 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        String input = in.nextLine();
        double number = Double.parseDouble(input);
        int roundedNumber = (int) Math.round(number);
        
        System.out.println(roundedNumber);
    }
}

发表于 2024-09-19 17:28:56 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        float num = in.nextFloat();
        String result = String.format("%.0f", num); // 结果是"123.46"
        System.out.println(result);
    }
}

发表于 2024-09-11 20:57:14 回复(0)
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextFloat()) { // 注意 while 处理多个 case
            Double a = in.nextDouble();
            int b = (int) (a + 0.5);
            System.out.println(b);
        }
    }
}

发表于 2024-09-10 20:06:41 回复(0)
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        BigDecimal num = new BigDecimal(bf.readLine());
        System.out.println(num.setScale(0, RoundingMode.HALF_UP));
    }
}
发表于 2024-08-13 15:43:57 回复(0)
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        float t = in.nextFloat();
        int i = (int) t+1;
        if(t+0.5>=i){
        System.out.println(i);
        }
        else {
            System.out.println((int)t);
        }
    }
}
   
发表于 2024-08-02 16:36:56 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextFloat()) { 
            Float f = in.nextFloat();
            int i = f.intValue();
            System.out.println(f + 0.5 >= i + 1 ? i + 1 : i);
        }
    }
}

发表于 2024-08-01 17:21:47 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double num = in.nextDouble();
        System.out.println(Math.round(num));
    }
}

发表于 2024-07-02 19:07:59 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        float f = sc.nextFloat();
        int b = 0;
        int  a = Math.round(f);
        System.out.println(a);
    }
}
发表于 2024-06-18 16:31:00 回复(0)
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        double d=scan.nextDouble();
        double dd=d;
        int a=0;
        while(dd>=1){
            dd=dd-1;
            a++;
        }
        if(dd>=0.5){
            System.out.println(a+1);
        }else{
             System.out.println(a);
        }
    }
}
发表于 2024-03-28 14:02:07 回复(0)
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        int i ;
        for(i=0;input.charAt(i+1)!='.';i++){
            System.out.print(input.charAt(i));
        }
        if(input.charAt(i+2)>'4'){
            System.out.print((int)input.charAt(i)-'0'+1);
        }else{
            System.out.print(input.charAt(i));
        }
    }
}

编辑于 2024-03-10 19:20:18 回复(0)
想到+1,double可能会失真,用了BigDecimal,不知道是不是多余步骤。。。
import java.util.*;
import java.math.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextDouble()) { // 注意 while 处理多个 case
            double a = in.nextDouble();
            int b = (int) a;
            double Newb = BigDecimal.valueOf(a).
                          subtract(BigDecimal.valueOf(b)).
                          compareTo(BigDecimal.valueOf(0.5));
            if (Newb >= 0) {
                System.out.println(b + 1);
            } else {
                System.out.println(b);
            }
        }
    }
}

编辑于 2024-03-07 17:48:17 回复(0)
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextFloat()) { // 注意 while 处理多个 case
            float a = in.nextFloat();
            System.out.println((int) (a + 0.5f));
        }
    }
编辑于 2024-03-01 18:34:55 回复(0)
public class Main {
    public static void main(String[] args) {
          Scanner sc=new Scanner(System.in);
        String s = sc.nextLine();
        BigDecimal bigDecimal = new BigDecimal(s);
        BigDecimal bigDecimal1 = bigDecimal.setScale(0, BigDecimal.ROUND_HALF_UP);
        System.out.println(bigDecimal1);
    }
编辑于 2024-02-22 16:48:40 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        double v = sc.nextDouble();
        long round = Math.round(v);
        System.out.println(round);
    }
}

发表于 2023-11-15 19:29:03 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextFloat()) { // 注意 while 处理多个 case
            Float a = in.nextFloat();
            int b = Math.round(a);
            System.out.println(b);
        }
    }
}
发表于 2023-11-05 19:55:11 回复(0)
"如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。"这不就是四舍五入的规则吗?直接Math.round()就行了提交观点
发表于 2023-10-17 15:39:31 回复(1)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextFloat()) {
            float f = in.nextFloat();
            int t1 = (int)f * 10 + 5;
            float t2 = f * 10;
            if (t1 > t2) {
                //不进位
                System.out.println((int)f);
            } else {
                System.out.println((int)f + 1);
            }

        }
    }
}
发表于 2023-09-06 20:48:24 回复(0)

问题信息

难度:
194条回答 76473浏览

热门推荐

通过挑战的用户

查看代码
取近似值