首页 > 试题广场 >

取近似值

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

编辑于 2016-04-08 20:03:11 回复(95)
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)
//利用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)
//这个题的思路很简单,也很容易实现。可以使用强制类型转换运算来实现向下取整或者向上取整,
//注意一个细节:强制类型转换运算是一种严格取整运算,它的原则不是四舍五入,对于小数,
//最后的返回都会是整数部分,在C语言中强制类型转换是用括号加类型符如(int)a,标准C++的
//强制类型转换是static_cast<int>(a);


#include<iostream>
using namespace std;

 int main()
{
    double num;
    while(cin>>num)
    {
        cout<<static_cast<int>(num+0.5)<<endl;
    }
    return 0;
}

/*
int main()
{
    double num;
    while(cin>>num)
    {
        int n=static_cast<int>(num);
        if(num-n>=0.5)
            cout<<n+1<<endl;
        else cout<<n<<endl;
    }
    return 0;
}
*/

编辑于 2019-07-30 07:56:28 回复(0)
#include<iostream>
using namespace std;
int main()
{
    float a;
    while(cin>>a)
    {
        cout<<((a-static_cast<int>(a))>=0.5? int(a)+1 : int(a))<<endl;
    }
    return 0;
}

发表于 2019-05-27 16:52:20 回复(0)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    float f;
    while(cin >> f) cout << round(f) <<endl;
    return 0;
}
直接用<cmath>里的round
发表于 2019-04-03 21:56:47 回复(0)
笨方法,将n强制转换为int型赋给a,即a为n的向下取整部分,n-a如果大于0.5输出a+1,否则输出a
#include<iostream>
using namespace std;
int main()
{
float n;
cin>>n;
int a;
a=int(n);
if(n-a>=0.5)
cout<<a+1;
else
cout<<a;
}
编辑于 2019-01-24 22:27:43 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main()
{
    double s;
    while(cin>>s)
    {
        s=s+0.5;
        int res = s;
        cout<<res<<endl;
    }
    return 0;
}

发表于 2018-08-14 17:02:28 回复(0)
震惊!没想到用一个Math.round()就解决了
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        float a=sc.nextFloat();
        int b=Math.round(a);
        System.out.println(b);
    }
}

发表于 2018-07-06 15:50:31 回复(0)
#include <iostream>
#include <cmath>
using namespace std;

int main()
{     double n;     while(cin>>n){             cout<<(int)(n+0.5)<<endl;     }     return 0;
}

发表于 2018-05-15 01:09:30 回复(0)
package huawei;

import java.util.Scanner;

public class round {
public static void main(String[] args) {
    Scanner in= new Scanner(System.in);
    while (in.hasNext()) {
        float n=in.nextFloat();
        int i;
        i=(int)(n+0.5);
    System.out.println(i);
    }
}
}

发表于 2018-04-15 11:10:52 回复(0)
//package com.gulamjan.t022.华为取近似值;
import java.util.Scanner;
public class Main {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner in = new Scanner(System.in);
  while (in.hasNext()) {
   float f = in.nextFloat();
   System.out.println(getApproximation(f));
  }
  in.close();
 }
 
 public static int getApproximation(float f) {
  int n = (int)f;
  if ((f-n) >= 0.5) {
   return n+1;
  }else {
   return n;
  }
 }
}
发表于 2017-10-05 16:52:50 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            double number = input.nextDouble();
            System.out.println((int)(number+0.5));                              
        }
    }
}


发表于 2017-10-03 15:43:11 回复(0)
#include<stdio.h>
#include<math.h>
int main()
    {
    float n;
    scanf("%f",&n);
    n=n+0.5;
    int m;
    m=(int)n;
    printf("%d",m);
}

发表于 2017-09-08 11:07:01 回复(0)

import java.util.Scanner;

/**
* 十分位小于5,向下取整,反之向上取整
* @author BlHe
*
* 2017年8月27日下午3:45:09
*/
public class Main {

 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  String str = sc.nextLine().trim();
  int index = str.indexOf(".");
  int result = 0;
  if (str.charAt(++index) >= '5'){
   result = (int) (Double.parseDouble(str) + 1);   
  }else {
   result = (int) Double.parseDouble(str);
  }
  System.out.println(result);
  sc.close();
 }
}

编辑于 2017-08-27 15:57:23 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main()
{
     float a;
    cin>>a;
    printf("%d",(int)(a*2+1)/2);
} 

发表于 2017-08-14 08:54:24 回复(0)
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		float f = in.nextFloat();
		System.out.println(Math.round(f));
	}

}

发表于 2017-07-26 17:54:07 回复(0)
//为啥我的思维和其他人不一样
#include<iostream>
#include<string>
using namespace std;

int main()
{
    string s;
    cin >> s;
    for (int i = 0; i<s.size(); i++)
    {
        if (s[i] == '.')
        {
            if (s[i + 1] >= 5+'0')
            {
                int a = s[i-1] - '0';
                a += 1;
                s[i-1] = a + '0';
            }
        }

    }
    for (int j = 0; j < s.size();j++)
        if (s[j] != '.')
        {
            cout << s[j];
            if (s[j+1] == '.')
                break;
        }
    //system("pause");
}

发表于 2017-07-08 21:02:42 回复(1)

#include<iostream>
using namespace std;
int main()
{
float a;
cin >> a;
int b = a*10;
int c = b%10;
if(c >= 5 )
{
cout << (int)a + 1;
}
else
{
cout << (int)a;
}

return 0;
}

发表于 2017-06-27 17:01:16 回复(2)

问题信息

难度:
1674条回答 76427浏览

热门推荐

通过挑战的用户

查看代码
取近似值