функция round () выдает странное число - PullRequest
1 голос
/ 12 апреля 2020

Я объявляю двойные переменные t и tau и присваиваю им значения 1 и 0,00001. Эта строка кода выдает 536870912 в консоли. В чем может быть причина?

printf("%i\n",round(t/(tau*double(2))));

Кстати, я пишу код в компиляторе C ++, но практически это C.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2020

round возвращает double. Печать с %i - неопределенное поведение.

Используйте %f для печати double:

printf("%f\n",round(t/(tau*double(2))));
2 голосов
/ 12 апреля 2020

Используйте %lf вместо %i и удалите двойную строку, в этом нет необходимости, поскольку вы уже определили переменные как double.

#include <stdio.h>
#include <math.h>

int main()
{
    double t = 1, tau = 0.00001;

    printf("%lf\n", round(t/(tau*2)));

    return 0;
}

Выходные данные -: 50000.000000


Если вы хотите только 50000, вы можете отредактировать свой код следующим образом

double t = 1, tau = 0.00001;
int answer;

answer = round(t/(tau*2));
printf("%i\n", answer);

Вывод -: 50000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...