DK04 - Làm tròn số

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

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Chắc hẳn bạn đã một hoặc vài lần sử dụng các hàm làm tròn trong các ngôn ngữ lập trình để làm tròn số. Vậy bạn có tự tin cài đặt lại một hàm làm tròn có sẵn đó không? Hãy viết chương trình làm tròn số thực ~n~ nhập từ bàn phím về số nguyên gần nhất (chênh lệch giá trị nhỏ nhất).

Khuyến nghị: Không nên sử dụng các hàm làm tròn có sẵn của ngôn ngữ lập trình, hãy nên tự cài đặt để hiểu sâu hơn!

Input

  • Số thực ~n~

Giới hạn

  • ~-10^6 \le n \le 10^6~
  • Dữ liệu đầu vào đảm bảo có ít hơn 10 chữ số phần thập phân.

Output

Kết quả sau khi làm tròn

Sample

Input #1
12.567
Output #1
13
Input #2
5.5
Output #2
6
Input #3
-100.2999999
Output #3
-100

Bình luận

Please read the guidelines before commenting.



  • 0
    Maigv_2010  đã bình luận lúc 15, Tháng 5, 2026, 11:00

    a a a


  • 0
    thanhvinh21052015  đã bình luận lúc 28, Tháng 3, 2026, 8:23

    full AC :

    n = float(input())

    a = int(n)

    if n >= 0: if n - a >= 0.5: print(a + 1) else: print(a) else: if a - n >= 0.5: print(a - 1) else: print(a)


  • 0
    nguyenquocantlt123  đã bình luận lúc 28, Tháng 2, 2026, 14:50

    x = float(input())

    if x >= 0: print(int(x + 0.5)) else: print(int(x - 0.5))


  • 0
    nguyenquocantlt123  đã bình luận lúc 28, Tháng 2, 2026, 14:49

    python

    x = float(input())

    if x >= 0: print(int(x + 0.5)) else: print(int(x - 0.5))


  • 0
    PPw  đã bình luận lúc 21, Tháng 1, 2026, 9:06 sửa 2

    include <iostream>

    include <iomanip>

    using namespace std; int main() { long double n; cin >> n; if (abs(n - int(n)) >= 0.5) if (n >= 0) cout << int(n) + 1; else cout << int(n) - 1; else cout << int(n); }


  • 0
    ThanhPhan_UTC  đã bình luận lúc 12, Tháng 1, 2026, 22:59

    import java.util.Scanner;

    public class buoi_01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double a = sc.nextDouble(); double thapPhan = a - (int)a; thapPhan = Math.abs(thapPhan);

        if(a>0){
            if( thapPhan >= 0.5){
                a = a - thapPhan + 1;
            }else {
                a = a - thapPhan;
            }
            System.out.println((int)a);
        }
        else{
            if( thapPhan < -0.5){
                a = a - thapPhan - 1;
            }else {
                a = a - thapPhan;
            }
            System.out.println((int)a);
        }
    
    }
    

    }


  • 0
    vinhnek2k13  đã bình luận lúc 8, Tháng 1, 2026, 14:23

    include <bits/stdc++.h>

    using namespace std; double a; int main() { cin>>a; cout<<setprecision(0)<<fixed; cout<<a; return 0; } day nek moi nguoi


  • 0
    leminhkhoi4g0newton5  đã bình luận lúc 5, Tháng 1, 2026, 9:45

    full ac đâu? huhu!


  • 0
    dtq18521319  đã bình luận lúc 21, Tháng 12, 2025, 10:10

    print((lambda a: int(a + 0.5) if a >= 0 else int(a - 0.5))(float(input())))


  • 0
    Anstrong2  đã bình luận lúc 22, Tháng 11, 2025, 15:29

    include <iostream>

    using namespace std;

    int main() { float n; cin >> n;

    int nguyen = n;
    double thapphan = n - nguyen;
    
    int ketqua;
    
    if (n > 0){
        if (thapphan >= 0.5) ketqua = nguyen + 1;
        else ketqua = nguyen;
    }
    else { 
        if (thapphan <= -0.5)
            ketqua = nguyen - 1;
        else  ketqua = nguyen;
    
    }
    cout << ketqua;
    

    }


  • -2
    duatrengaunhatxom123  đã bình luận lúc 13, Tháng 11, 2025, 10:34

    import math

    x = float(input().strip()) print(math.floor(x + 0.5))

    code cho ae dùng python3 nè


    • 0
      TomTom  đã bình luận lúc 7, Tháng 1, 2026, 14:20

      sai


  • 0
    mitgsut2007  đã bình luận lúc 30, Tháng 10, 2025, 11:59

    Bài này không ac được thì do 2 trường hợp 1 là thiếu dấu >= 2 là test với số âm


  • 0
    manhvy12  đã bình luận lúc 21, Tháng 10, 2025, 13:23

    include <bits/stdc++.h>

    using namespace std; double x; int main() {

    cin >> x;
    int nguyen = x;
     double phan = x - nguyen;
     int ketqua;
     if (x >= 0) {
        if (phan >= 0.5) ketqua = nguyen + 1;
         else ketqua = nguyen;
     }  else {
        if (phan <= -0.5) ketqua = nguyen - 1;
         else ketqua = nguyen;
    }
    
     cout << ketqua;
    return 0;
    

    }


  • 0
    dot755  đã bình luận lúc 14, Tháng 10, 2025, 13:20

    c++ thì đổi double sang int đúng ko v mn


    • 0
      quanhoanganh37  đã bình luận lúc 2, Tháng 11, 2025, 12:44

      vẫn double


  • 2
    darkurbit  đã bình luận lúc 8, Tháng 8, 2025, 2:07

    program DK04; uses crt; var n: extended; begin clrscr; readln(n); write(n:0:0); readln; end.


  • 1
    BoCow2808  đã bình luận lúc 28, Tháng 7, 2025, 6:41

    mình dùng cả round với float r mà kẹt test 7


    • 0
      GiangTheory404  đã bình luận lúc 23, Tháng 11, 2025, 14:13

      float số sau dấu phẩy hơi ít, sử dụng double thử xem


  • 0
    tiendo09711  đã bình luận lúc 17, Tháng 7, 2025, 9:51

    NHớ các điều kiện về số âm thoi


  • -1
    Mysterious_Park_1787  đã bình luận lúc 12, Tháng 6, 2025, 3:20

    Chú ý số có 0.5 nha ae


  • 1
    Mysterious_Park_1787  đã bình luận lúc 12, Tháng 6, 2025, 2:51

    Chú ý số có 0.5 nha ae


  • -1
    chauanhcute  đã bình luận lúc 9, Tháng 6, 2025, 9:29

    ai giúp t viết code python đc ko?


  • 1
    hnbloom251  đã bình luận lúc 14, Tháng 3, 2025, 14:12 sửa 2

    khó ghê


  • -1
    suzunesokawaiii  đã bình luận lúc 20, Tháng 2, 2025, 11:10

    Spoiler

    ...

    double a, b; int tam; tam = int(a + 0.5); tam = int(a - 0.5);

    done


  • 5
    frekraiko23  đã bình luận lúc 27, Tháng 10, 2024, 5:33 chỉnh sửa

    mặc dù ko ai cần nhưng đây là code pascal

    var a:extended;

    begin

    readln(a);

    write(a:0:0);

    end.

    :))


  • 0
    thaivp  đã bình luận lúc 11, Tháng 10, 2024, 14:42

    bài này dùng xâu là được tui thử rủi đúng hết đó


  • -4
    Minh_Khoa  đã bình luận lúc 9, Tháng 10, 2024, 7:54

    xin code test 7 ạ


  • 0
    super_god  đã bình luận lúc 8, Tháng 10, 2024, 2:41

    hello ae


  • 0
    241124022204  đã bình luận lúc 2, Tháng 10, 2024, 13:58

    python sai case 7 chỗ nào ạ em xài float


  • -3
    phucan2015  đã bình luận lúc 30, Tháng 9, 2024, 12:30

    khó quá


  • -3
    k192010  đã bình luận lúc 20, Tháng 4, 2024, 13:51

    help test 3


  • -3
    lebinhminh12345679  đã bình luận lúc 6, Tháng 1, 2024, 8:43

    đề không sử dụng các hàm làm tròn mà bạn


  • -4
    nguyennhat7185  đã bình luận lúc 14, Tháng 12, 2023, 9:15

    case 7 là gì v mn


  • 0
    nguyenxuantho_2003  đã bình luận lúc 6, Tháng 12, 2023, 3:50

    -Float (float): Có độ chính xác khoảng 7 chữ số thập phân. -Double (double): Có độ chính xác khoảng 15 chữ số thập phân. Đề yêu cầu là Dữ liệu đầu vào đảm bảo có ít hơn 10 chữ số phần thập phân. Nên test Case 6 để kiểu dữ liệu fload là sai nhé!!


  • 1
    taithikgirl  đã bình luận lúc 28, Tháng 10, 2023, 2:28

    hao no


  • -1
    dungnt_99  đã bình luận lúc 22, Tháng 10, 2023, 4:01 sửa 3

    số 6 input là gì ?


    • -1
      fIshx2  đã bình luận lúc 8, Tháng 12, 2023, 15:11

      doi float thanh double


  • 2
    KhangVN098  đã bình luận lúc 5, Tháng 10, 2023, 15:59

    Ai sai case 6 thì nhớ xem coai có để float hong nhé, nếu có nhớ chuyển sang double là đc nha


    • -3
      Bachuthegioi  đã bình luận lúc 14, Tháng 10, 2023, 14:08

      cho em hỏi tại sao v ạ


      • 3
        doquockien  đã bình luận lúc 27, Tháng 10, 2023, 14:38

        Kiểu float (số thực) chiếm 4 byte và có thể có tới 6 con số phần sau dấu thập phân, trong khi double chiếm 8 bytes và có thể có tới 10 con số phần thập phân


  • -1
    dicode  đã bình luận lúc 1, Tháng 9, 2023, 2:56

    cho em hỏi sai ở test case 6 là sao vậy ạ


    • -3
      anhdeptrai1912  đã bình luận lúc 15, Tháng 9, 2023, 3:24

      ké ạ mình cũng sai case 6 k biết sao


  • 0
    trinhtheanh3010  đã bình luận lúc 16, Tháng 8, 2023, 15:18

    tui làm kết quả đúng cả âm lẫn dương mà từ case 3 tui sai hết, ai có code đúng ko tui tham khảo vs


  • 0
    namchamhoccode  đã bình luận lúc 4, Tháng 8, 2023, 9:08

    Test case 6 kiểm tra gì vậy mn, mình bị lỗi hoài :((


  • 4
    violet_pho_hoc_tap  đã bình luận lúc 2, Tháng 8, 2023, 11:16

    chú ý số âm và a.49999999999999 thôi, 1 là so sánh tường minh (khi vượt quá độ chính xác của kiểu double thì khi xuất nó ra a.5 chứ nó vẫn là a.49999999999 ), 2 là sử lý xâu tìm dấu chấm đồ.


  • 0
    trungle  đã bình luận lúc 29, Tháng 7, 2023, 7:57 chỉnh sửa

    Dùng hàm round và cần chú ý đến case 3


  • 1
    hieudz2502  đã bình luận lúc 24, Tháng 7, 2023, 13:19

    Bài này nếu không dùng hàm có sẵn thì sử dụng string, kiểm tra kí tự đầu sau dấu . rồi xử lý, nhớ cẩn thận trường hợp có dấu - ở đầu


  • 0
    Tranh  đã bình luận lúc 21, Tháng 7, 2023, 15:52

    Case 6, với case 7 có giá trị là gì ấy mọi người. Em thử với cách round off mà ko qua được ạ


  • 0
    khanh2925  đã bình luận lúc 11, Tháng 7, 2023, 9:36

    Bài này làm sao vậy ạ :))


  • 1
    huynguyenchinh4  đã bình luận lúc 9, Tháng 7, 2023, 14:00

    xin chỉ giáo


  • 0
    codeovertime  đã bình luận lúc 9, Tháng 7, 2023, 6:16

    giỏi quá cậu