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à
Bài liên quan
cái đó là làm tròn cho số âm.
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).