首页 > 试题广场 >

取近似值

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

输入描述:
\hspace{15pt}在一行上输入一个小数点后位数不超过 5 位的实数 x\ (0.00001 \leqq x \leqq 20)


输出描述:
\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)

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)
//利用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)
//这个题的思路很简单,也很容易实现。可以使用强制类型转换运算来实现向下取整或者向上取整,
//注意一个细节:强制类型转换运算是一种严格取整运算,它的原则不是四舍五入,对于小数,
//最后的返回都会是整数部分,在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)

问题信息

难度:
1665条回答 75488浏览

热门推荐

通过挑战的用户

查看代码
取近似值