Как бы Вы сделали - Округление числа типа double
---
"Аллах не ведёт людей неверных."
amen
есть какая-нибудь стандартная функция в библиотеках для выделения дробной части?
modf
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
thx
надо его округлить _В_МАТЕМАТИЧЕСКОМ_СМЫСЛЕ_Неохота стандартных функций - пиши n = (int x + 0.5 ) .
Ну я всегда так и писал, а вот теперь задумался о том какое безобразие творю
имхо, вполне нормальный способ
Гуглом научить пользоваться?
x = -1.1;
n = (intx + 0.5);
printf(">%d\n",n); //>0
А вообще, if-ом наверное быстрее всего будет.
if(x<0) n = (intx-0.5); else n = (intx+0.5);
(x<0) ? static_cast<int>(x-0.5) : static_cast<int>(x+0.5);
вот на дельфи
procedure TForm1.FormCreate(Sender: TObject);
var
S, T: string;
begin
Str(1.4:2:1, T);
S := T + ' rounds to ' + IntToStr(Round(1.4 + #13#10;
Str(1.5:2:1, T);
S := S + T + ' rounds to ' + IntToStr(Round(1.5 + #13#10;
Str(-1.4:2:1, T);
S := S + T + ' rounds to ' + IntToStr(Round(-1.4 + #13#10;
Str(-1.5:2:1, T);
S := S + T + ' rounds to ' + IntToStr(Round(-1.5;
MessageDlg(S, mtInformation, [mbOk], 0);
end;
Оставить комментарий
Yulka-MOl
Вопрос по C/C++Дано число x типа double надо его округлить _В_МАТЕМАТИЧЕСКОМ_СМЫСЛЕ_
То есть func(5.4) = 5
func(5.5 ) = 6
Суть вопроса : приходится работать с дробной частью числа.
Я его выделяю так
double z;
z = x - double(int(x;
Как это написать красиво, без этого изврата?