首页 > 试题广场 >

取近似值

[编程题]取近似值
  • 热度指数:571274 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。

数据范围:保证输入的数字在 32 位浮点数范围内

输入描述:

输入一个正浮点数值



输出描述:

输出该数值的近似整数值

示例1

输入

5.5

输出

6

说明

0.5>=0.5,所以5.5需要向上取整为6   
示例2

输入

2.499

输出

2

说明

0.499<0.5,2.499向下取整为2   
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)
将输入的数字上去就加上0.5,然后取整
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        BigDecimal bigDecimal = new BigDecimal(in.next()).add(new BigDecimal("0.5"));
        System.out.println(bigDecimal.longValue());
    }

}


发表于 2023-08-08 21:10:23 回复(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 的区别
        double num = in.nextDouble();
        int n = (int)num;
        System.out.print(num-n>=0.5 ? n+1:n );
    }
}

发表于 2023-07-08 15:09:46 回复(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.hasNextDouble()) { // 注意 while 处理多个 case
            double a = in.nextDouble();
            int b = (int)a;
            if(a-b>=0.5)
            System.out.println(b+1);
            if(a-b<0.5)
            System.out.println(b);
        }
    }
}

发表于 2023-07-05 10:09:54 回复(0)
public class Test04 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextDouble()) { // 注意 while 处理多个 case
            double num = in.nextDouble();
            int result = (int)num;
            if(num-result>=0.5){
                result++;
            }
            System.out.println(result);
        }
    }
}

发表于 2023-06-05 16:25:26 回复(0)
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
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.hasNextLine()) { // 注意 while 处理多个 case
            String input = in.nextLine();
            BigDecimal out = new BigDecimal(input);
            System.out.println(Math.round(out.floatValue()));
        }
    }
}

发表于 2023-05-11 17:42:51 回复(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.hasNextDouble()) { // 注意 while 处理多个 case
            double a = in.nextDouble();
            System.out.println(doubleToInt(a));
        }
    }
    public static int doubleToInt(double a){
        int b = (int)a;
        double c = a - b;
        if(c >= 0.5) {
            return b+1;
        }
        return b;
    }
}
发表于 2023-04-27 16:35:14 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        if (in.hasNextFloat()) {
            Float val = in.nextFloat();
            System.out.println(Float.valueOf(val.intValue()+".5").compareTo(val)>0?val.intValue():val.intValue()+1);
        }
    }
}

发表于 2023-04-20 16:53:15 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.next();
        Integer b = Integer.valueOf(str.substring(str.indexOf(".")+1, str.indexOf(".")+2));
        Integer a = Integer.valueOf(str.substring(0, str.indexOf(".")));
        if(b >= 5) {
            System.out.print(a + 1);
        }else{
            System.out.print(a);
        }
    }
}
发表于 2023-03-28 15:42:48 回复(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.hasNext()) { // 注意 while 处理多个 case
            float a = in.nextFloat();
            int b = (int)a;
            float c = a-b;
            if(c>=0.5){
                b++;
            }
            System.out.println(b);
        }
    }
}

发表于 2023-03-14 15:03:39 回复(0)

问题信息

难度:
184条回答 73658浏览

热门推荐

通过挑战的用户

查看代码