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
a a a
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)
x = float(input())
if x >= 0: print(int(x + 0.5)) else: print(int(x - 0.5))
python
x = float(input())
if x >= 0: print(int(x + 0.5)) else: print(int(x - 0.5))
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); }
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);
}
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
full ac đâu? huhu!
print((lambda a: int(a + 0.5) if a >= 0 else int(a - 0.5))(float(input())))
include <iostream>
using namespace std;
int main() { float n; cin >> n;
}
import math
x = float(input().strip()) print(math.floor(x + 0.5))
code cho ae dùng python3 nè
sai
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
include <bits/stdc++.h>
using namespace std; double x; int main() {
}
c++ thì đổi double sang int đúng ko v mn
vẫn double
program DK04; uses crt; var n: extended; begin clrscr; readln(n); write(n:0:0); readln; end.
mình dùng cả round với float r mà kẹt test 7
float số sau dấu phẩy hơi ít, sử dụng double thử xem
NHớ các điều kiện về số âm thoi
Chú ý số có 0.5 nha ae
Chú ý số có 0.5 nha ae
ai giúp t viết code python đc ko?
khó ghê
Spoiler
mặc dù ko ai cần nhưng đây là code pascal
var a:extended;
begin
readln(a);
write(a:0:0);
end.
:))
bài này dùng xâu là được tui thử rủi đúng hết đó
xin code test 7 ạ
hello ae
python sai case 7 chỗ nào ạ em xài float
khó quá
help test 3
đề không sử dụng các hàm làm tròn mà bạn
case 7 là gì v mn
-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é!!
hao no
số 6 input là gì ?
doi float thanh double
Ai sai case 6 thì nhớ xem coai có để float hong nhé, nếu có nhớ chuyển sang double là đc nha
cho em hỏi tại sao v ạ
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
cho em hỏi sai ở test case 6 là sao vậy ạ
ké ạ mình cũng sai case 6 k biết sao
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
Test case 6 kiểm tra gì vậy mn, mình bị lỗi hoài :((
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 đồ.
Dùng hàm round và cần chú ý đến case 3
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
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 ạ
Bài này làm sao vậy ạ :))
xin chỉ giáo
giỏi quá cậu