01/10/2018, 11:59

Hỏi về hàm làm tròn số trong C++

Em có hàm làm tròn số như sau:

{
	double result;
	x *= pow(10, n);
	if (x >= 0)
		result = floor(x + 0.5);
	else
		result = -floor(-x + 0.5);
	result /= pow(10, n);
	return result;
}

E vẫn còn mơ hồ chổ dòng lệnh: result = -floor(-x + 0.5);
Ai có thể giải thích chổ này cho dễ hiểu được không ạ,em hiểu mà nó mơ hồ lắm ví dụ như tại sao phải -x rồi mới + 0.5 rồi lại - tông lại.mà không làm như trên là floor(x + 0.5) luôn cũng đúng mà

Nguyễn Duy Hùng viết 14:10 ngày 01/10/2018

cái đó là làm tròn cho số âm.

rogp10 viết 14:09 ngày 01/10/2018

Nếu x là int thì coi chừng int 4 byte.

Thực ra làm tròn kiểu này là làm tròn về số “nguyên” gần nó nhất. Làm như bạn thì sẽ không đúng, như -1.23 -> -0.73 -> 0 (sai).

Bài liên quan
0