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 :(((

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 :expressionless: Với lại đừng chèn thêm “mới học lập trình” vào, không hay đâu.

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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?