首页 > 试题广场 >

取近似值

[编程题]取近似值
  • 热度指数:569063 时间限制: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   
#include <iostream>
using namespace std;
int main()
{
float a;
cin>>a;
cout<<int(a+0.5);
return 0;
}

编辑于 2016-04-08 20:03:11 回复(93)
import java.math.BigDecimal; import java.util.Scanner; /**  * 取近似值  * 解题思路:熟练运用Math.round()方法或者BigDecimaldivide方法  */ public class Main { public static void main(String[] args) { testOne(); //        testTwo();  } private static void testOne() {
        Scanner scan = new Scanner(System.in); double input = scan.nextDouble();
        System.out.println(Math.round(input));
    } private static void testTwo() {
        Scanner scan = new Scanner(System.in); double input = scan.nextDouble();
        BigDecimal inputDec = new BigDecimal(input + "");
        System.out.println(inputDec.divide(new BigDecimal("1"), 0, BigDecimal.ROUND_HALF_UP));
    }
}
发表于 2021-12-15 14:19:18 回复(0)
package main

import (
    "fmt"
)

func main() {
    var res float32
    fmt.Scan(&res)
    fmt.Println(int(res+0.5))
}

发表于 2021-10-20 17:48:58 回复(0)
import java.util.Scanner;
import java.lang.Math;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
            float num = scanner.nextFloat();
            if(num > 0){
                float temp = num*10;
                int temp1 = (int)temp%10;
                if(temp1>=5){    //向上取整
                    System.out.println((int)Math.ceil(num));
                }
                else{       //向下取整
                    System.out.println((int)Math.floor(num));
                }
            }
            else{
                System.out.println("输入的数字有误!");
            }
        }
    }
}


发表于 2021-04-09 16:00:27 回复(0)
C# 使用 Math.Round 要加模式参数,否则是四舍六入五成双,不是四舍五入
Console.WriteLine(Math.Round(double.Parse(Console.ReadLine()), MidpointRounding.AwayFromZero));


发表于 2021-04-01 02:06:10 回复(0)
#include <stdio.h>
int main(void)
{
    float i;
    int j;
    scanf("%f",&i);
    i=i+0.5;
    j=i;
    printf("%d",j);
    return 0;
}
发表于 2021-03-17 16:12:53 回复(0)
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String input = sc.nextLine();
            int result = 0;
            int index = input.indexOf(".");
            String number1 = String.valueOf(input.charAt(index+1));
            String number2 = input.substring(0,index);
            int flag = Integer.parseInt(number1);
            if(flag>=5){
                result = Integer.parseInt(number2)+1;
            }else{
                result = Integer.parseInt(number2);
            }
            System.out.println(result);   
            
        }
    }
}
发表于 2020-11-25 14:27:22 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            double num = sc.nextDouble();
            System.out.println(getNum(num));
        }
    }
    public static int getNum(double num){
        return (int) Math.floor(num + 0.5);
    }
}

发表于 2020-09-19 20:02:51 回复(0)
对整数部分和小数部分分开处理:
整数部分:直接int转换
小数部分:乘以10,取除以10的余数。判断是否大于5即可
while True:
try:
a=float(raw_input())
b=a*10
b=b%10
if b>=5:
count=1
else:
count=0
a=int(a)+count
print(a)
except:
break
编辑于 2020-06-17 16:47:01 回复(0)
import java.util.Scanner;
public class Main{
	public static void main(String[] args){
		Scanner ss = new Scanner(System.in);
		float a = ss.nextFloat();
		if((a - (int)a) < 0.5){
			System.out.println((int)a);
		}else {
			System.out.println((int)a+1);
		}
	}
}

发表于 2020-05-08 14:07:33 回复(0)

python3

n = list(input().split('.'))
n_1 = int(n[0])
n_2 = int(n[1])
if n_2 >= 5:
    n_1 += 1
print(n_1)
发表于 2020-04-11 20:21:40 回复(1)
a=float(input())
b=int(a)
if a-b>=0.5:
    print(b+1)
else:
    print(b)
发表于 2020-03-04 01:27:32 回复(0)
print(round(float(input())+0.01))

发表于 2020-02-20 15:09:10 回复(0)
#include<iostream>
using namespace std;
int main(){
    float a;
    cin>>a;
    int b=(int)(a*10);
    if(b%10>=5)
        cout<<b/10+1<<endl;
    else
        cout<<b/10<<endl;
}

发表于 2020-01-06 18:20:48 回复(0)
//利用ceil和floor函数
#include<math.h>
#include <iostream>

using namespace std;

int main()
{
	float a;
	cin >> a;
	int ceilnum = ceil(a);
	int floornum = floor(a);
	if (((float)ceilnum - a > 0.5))
	{
		cout << floornum;
	}
	else
	{
		cout << ceilnum;
	}
	return 0;
}


发表于 2019-09-14 13:08:25 回复(0)
int main() {
    float a;
    cin >> a;
    cout << round(a) << endl;
    return 0;
}

发表于 2019-09-07 13:52:30 回复(0)
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
    float num;
    int res = 0;
    while (cin >> num){
        string tmp = to_string(num);
        if (stoi(tmp.substr(2, 1)) >= 5)
            cout << ceil(num) << endl;
        else cout << floor(num) << endl;
    }
    return 0;
}

发表于 2019-09-02 16:16:37 回复(0)
'''
#方法一,不知道为什么4.5被计算成4
num = float(input())
#print("%5.3f" % num)
#round(num)
print(round(num))
'''
'''
方法二
num = float(input())
#print("%6.3f" % num)
#print(num - int(num))
#print(int(num)+1 if num-int(num)>=0.5 else int(num))
'''
#方法三
num = float(input())
print(int(num + 0.5))
发表于 2019-08-31 11:03:07 回复(0)
python 一行
print(int(float(input())+ 0.5))

发表于 2019-08-15 12:04:11 回复(0)

问题信息

难度:
1572条回答 73618浏览

热门推荐

通过挑战的用户

查看代码