01/10/2018, 12:12

Làm thế nào để làm trồn số thực đến 2 chữ số thập phân

em có đoạn code như thế này và kết quả muốn làm tròn đến số thập phân thứ hai nhưng mà máy tính nó cứ tự động làm tròn lên số nguyên gần nhất thì phải làm nnao ạ
VD:

#include <stdio.h>

int main()
{
	long long A,B,a,b;
	double ans,C;
	scanf ("%d %d",&a,&b);
	A=a*a;
	B=b*b;
	C=B/A;
	ans=1-C;
	printf ("%.2f",ans);
}

INPUT: 10 45
OUTPUT:-19.00
đáng lẽ output phải là -19.25 ạ :<
mong các bác giúp đỡ ạ bài rất đơn giản nhma em mới học lập trình nên kbt xử lí sao :(((

Khoa NTA viết 14:18 ngày 01/10/2018

Mới vào forum thì bạn cũng nên bỏ một ít thời gian đọc nội quy và lưu ý khi đăng bài nếu bạn không muốn bị chửi Với lại đừng chèn thêm “mới học lập trình” vào, không hay đâu.

Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…

Còn bài của bạn thì đã muốn xuất ra kiểu số thực thì nên xài số thực hẳn luôn đi, xài số nguyên chi rồi lằng nhằng. Với ngôn ngữ lập trình thì hai số nguyên chia nhau không ra số thực đâu, nên kết quả chia có gán cho biến là số thực cũng chẳng ăn nhập gì.
Lập trình không giống toán nên cứ a = a*a; làm tới, không mất công tốn thêm bộ nhớ.
Có 2 cách giải quyết:

  1. Ép kiểu số thực trong lúc chia: C = (double) B/A
  2. Sử dụng hẳn luôn số thực: double A, B, a, b; và sửa lại ở hàm nhập scanf("%lf %lf", &a, &b);

Đối với các kiểu dữ liệu như long hay double thì chuỗi format nên có tiền tố l đi trước, ví dụ:

long a;
scanf("%ld", &a);

double b;
scanf("%lf", &b);

P/s: xin lỗi trước vì mình đang có chuyện bực bội nên lời văn có vẻ như chửi vào mặt chứ mình không có ý đó :v

Bài liên quan
0