Top.Mail.Ru
Ответы

Как округлить число до n знаков после запятой с++?

Мне надо округлить число до 6 знаков после запятой, но при этом не присваивать округлённое число самому числу. Что я имею ввиду? например есть выражение 34+x*123-2 и мне нужно округлить не сам икс (не надо присваивать округлённый икс иксу), а икс только для того выражения. Например в питоне я бы сделал 34+round(x, 6)*123-2, а как сделать так в с++? Я посмотрел в инете способ round(х*1000000)/1000000, но если икс больше одного, то округление не правильное, к примеру если х = 12345.23213, то выведет 12345.2, а мне надо округлить именно после запятой

По дате
По Рейтингу
Аватар пользователя
Мыслитель

Всё та же round, округляет до ближайшего целого. Т. е. если надо округлить до сотых, то round(x*100)/100. Работает в си и си++. Заголовок math.h.

Аватар пользователя
Просветленный

выделяешь дробную и целую части
/* modf example */
#include <stdio.h> /* printf */
#include <math.h> /* modf */

int main ()
{
double param, fractpart, intpart;

param = 3.14159265;
fractpart = modf (param , &intpart);
printf ("%f = %f + %f \n", param, intpart, fractpart);
return 0;
}
а потом к дробной части применяешь *1млн и / 1млн