[Làm quen OJ]. Bài 6. Hàm ceil, floor, round

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
28Tech
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Hàm ceil : làm tròn lên số nguyên gần nhất, floor : làm tròn xuống số nguyên gần nhất, round : làm tròn số nguyên phụ thuộc vào phần thập phân.

Cho số thực X nhiệm vụ của bạn là sử dụng 3 hàm trên để tìm số nguyên nhỏ hơn gần X nhất, số nguyên lớn hơn gần X nhất, số nguyên gần X nhất.

Lưu ý bạn cần in ra số nguyên nên không được in trực tiếp giá trị của 3 hàm này, nó sẽ là số thực.


Đầu vào

Dòng duy nhất chứa số thực X


Ràng buộc

1<=X<=10^6


Đầu ra

In ra 3 số trên 3 dòng


Ví dụ

Input 01
3.59
Output 01
3
4
4

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    Huu_Tien  đã bình luận lúc 5, Tháng 8, 2026, 1:55

    include <iostream>

    include <math.h>

    using namespace std;

    int main () { double x; cin >> x; cout << floor(x) << endl << ceil(x) << endl << round(x) << endl; return 0;

    } mọi người giúp em tại sao phải ép int cho từng cái hàm v ạ. Em không biết lí do vì sao hết, mọi người giúp em giải thích với ạ. Em cảm ơn mọi người nhiều lắm


  • 0
    Huu_Tien  đã bình luận lúc 5, Tháng 8, 2026, 1:54

    include <iostream>

    include <math.h>

    using namespace std;

    int main () { float x; cin >> x; cout << floor(x) << endl << ceil(x) << endl << round(x) << endl; return 0;

    } mọi người giúp em với em coi lời giải thì phải ép int cho từng cái, không biết tại sao nữa. Mọi người giúp em giải thích với ạ, em cảm ơn mọi người nhiều lắm.


  • 0
    nonamexxx  đã bình luận lúc 9, Tháng 1, 2026, 13:05

    import java.util.Scanner;

    public class Bai1 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double x = sc.nextDouble();
        System.out.println((int)Math.floor(x));
        System.out.println((int)Math.ceil(x));
        System.out.println((int)Math.round(x));
    }
    

    }


  • 0
    L8_DuongThanhKhiem  đã bình luận lúc 22, Tháng 11, 2025, 3:59

    FULL AC:

    #include <bits/stdc++.h>
    using namespace std;
    double x;
    int main(){
        cin >> x;
        long long tron = floor(x);
        long long tron2 = ceil(x);
        long long round1 = round(x);
        cout << tron << endl;
        cout << tron2 << endl;
        cout << round1;
        return 0;
    }
    

    • 0
      nguyennhulamvurmc  đã bình luận lúc 17, Tháng 12, 2025, 7:40

      JOIN TEAM BACON_RMC TODAY!


    • 0
      trinhdinhhoan2k12  đã bình luận lúc 15, Tháng 12, 2025, 9:37

      JOIN TEAM COLUMBUS TODAY!


  • 0
    Nguyen0907  đã bình luận lúc 5, Tháng 7, 2025, 13:29

    include <iostream>

    include <cmath>

    using namespace std;

    int main() { double x;

    cin >> x;
    
    long long tron = floor(x);
    long long tron2 = ceil(x);
    long long round1 = round(x);
    
    cout << tron << '\n'
         << tron2 << '\n'
         << round1;
    

    }


  • 0
    SteepMoleCules  đã bình luận lúc 1, Tháng 7, 2025, 14:30

    gợi ý nhé: ae cần khai báo biến double và ép kiểu giá trị int cho từng kết quả


  • 2
    nmtuong_cpp  đã bình luận lúc 16, Tháng 4, 2025, 3:29

    Bài này số thực x mọi người dùng double nhé, dùng float rớt mấy case đằng sau.

    Mình thử thì không ép int nó vẫn tự cho về số nguyên, điều kiện là x bé hơn 10^6. x >= 10^6 thì nó ra số dạng m.n*e + p


    • 0
      luuthuyvan_cpp  đã bình luận lúc 25, Tháng 2, 2026, 18:08

      ui cảm ơn bn


    • 0
      Quanghuybm2k6  đã bình luận lúc 22, Tháng 5, 2025, 10:15

      cảm ơn người anh em đã cho mình ít mẹo


  • 0
    bengokyeuanh99  đã bình luận lúc 9, Tháng 4, 2025, 4:22

    import sys import math

    def read_float(): line = sys.stdin.readline() try: return float(line.strip()) except ValueError: raise ValueError("Invalid input: not a float.")

    def roundhalfup(x): return int(x + 0.5) if x >= 0 else int(x - 0.5)

    def main(): try: x = readfloat() print(int(math.floor(x))) print(int(math.ceil(x))) print(roundhalf_up(x)) except Exception as e: sys.stderr.write(f"Error: {e}\n") sys.exit(1)

    if name == "main": main()


  • 0
    tienduc_381  đã bình luận lúc 9, Tháng 4, 2025, 2:02

    include <iostream>

    using namespace std; int floor(double x){ if ((double)x == (int)x){ return x; }else{ return (int)x ; } } int ceil(double x ){ if ((double)x == (int)x){ return x; }else{ return (int)x +1 ; } } int round(double x){ if ((double)x == (int)x){ return x; }else if(x-(int)x<0.5){ return (int)x ; }else{ return (int)x+1; } } int main(){ double x; cin >> x ; cout << floor(x) << endl; cout << ceil(x) << endl; cout << round(x) << endl ; }


  • -10
    le_anh_khoa2006  đã bình luận lúc 5, Tháng 11, 2024, 8:18

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -24
    longhk2012  đã bình luận lúc 26, Tháng 5, 2024, 12:13

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • -22
      nguyen_quoc_cuonghihi  đã bình luận lúc 4, Tháng 6, 2024, 4:41

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.