Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
-30 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
1

Как отобразить время с printf, но с 4-мя цифрами после запятой?

11.05.2021, 20:22. Показов 1279. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Решаю задачу по c++, где нужно измерять скорость выполнения программы, измеряю время с помощью time_t, вывожу с помощью printf:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
time_t t, t1;
 
int main(int argc, char* argv[])
{   
    setlocale(LC_ALL, "ru");
    t = time(NULL);
    printf("\nThe number of seconds since January 1, 1970 is %ld", t);
    InitThread();
    t1 = time(NULL);
    t1 = t1 - t;
    printf("Elapsed time in seconds is %d, Bye!\n", t1);
    _getch();
    return 0;
}
Код
Elapsed time in seconds is 17, Bye!
Хотелось бы, чтобы время выводилось в десятичных числах, но с 4-мя цифрами после запятой, однако если прописать так:
C++
1
printf("Elapsed time in seconds is %3.4f, Bye!\n", t1);
то выводит так
Код
Elapsed time in seconds is 0,0000, Bye!
Кто знает как правильно вывести?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2021, 20:22
Ответы с готовыми решениями:

Как сделать значение с двумя цифрами после запятой?
Нашел способ как сделать перевод из textbox3 из string в float Convert.ToSingle(textBox3.Text)...

Printf знаки после запятой
Всем здравствовать. Вопрос следующий: Есть элементарная программа, где 2 переменные. Одна...

Printf - число знаков после запятой
На первом скрине код: else printf("Значение x = %f не принадлежит области определения функции\n",...

Аналог printf. Увеличить количество цифр после запятой
очень нужна printf C++ или что-то похожее на C#,есть ли такие функции?И какие функции для...

6
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
11.05.2021, 20:27 2
Цитата Сообщение от SalavatGood Посмотреть сообщение
Кто знает как правильно вывести?
Так а почему вы вообще использовали %d или %f? Откуда вы взяли, что time_t вообще возможно вывести через printf?

Цитата Сообщение от SalavatGood Посмотреть сообщение
Кто знает как правильно вывести?
time_t невозможно вывести через printf. Хотите выводить через printf - приводите значение к какому-нибудь типу, который возможно вывести через printf.

Цитата Сообщение от SalavatGood Посмотреть сообщение
чтобы время выводилось в десятичных числах, но с 4-мя цифрами после запятой,
Что за цифры после запятой? Что они должны содержать?
1
-30 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
11.05.2021, 20:33  [ТС] 3
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Так а почему вы вообще использовали %d или %f? Откуда вы взяли, что time_t вообще возможно вывести через printf?
В самой методичке было написано %ld, думал легко можно вывести в десятичном виде
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что за цифры после запятой? Что они должны содержать?
миллисекунды, а до запятой целые секунды
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
11.05.2021, 20:46 4
Цитата Сообщение от SalavatGood Посмотреть сообщение
В самой методичке было написано %ld
Методичку в топку. Тем не менее: если в методичке было %ld, то почему у вас в коде вдруг стало %d?

Цитата Сообщение от SalavatGood Посмотреть сообщение
миллисекунды, а до запятой целые секунды
А кто вам сказал, что time() даст вам какие-то "миллисекунды"? Язык не говорит ничего о том, что считает time(), но обычно эта функция считает по секунде.

Вы же сами в коде выше выводили секунды, то есть знаете об этом. Почему вы тогда надеетесь на какие-то "миллисекунды"? Откуда они вдруг возьмутся?
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
11.05.2021, 20:53 5
Цитата Сообщение от SalavatGood Посмотреть сообщение
думал легко можно вывести в десятичном виде
Ищи функцию, которая будет выдавать целые значения милисекунд или наносекунд. time() выдаёт целые секунды, соответственно десятых там нет изначально, уже при записывании в переменную time_t t
1
-30 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
11.05.2021, 20:55  [ТС] 6
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
почему у вас в коде вдруг стало %d
Просто пробовал различные варианты форматов, остановился на %d
Кстати, немного покопавшись, выяснил, что функция clock() из <ctime> возвращает время в миллисекундах
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
11.05.2021, 21:00 7
Цитата Сообщение от SalavatGood Посмотреть сообщение
возвращает время в миллисекундах
Вот её разность дели на 1000.0f и сохраняй в переменную float. И вот тогда уже применяй

C
1
printf("Elapsed time in seconds is %.3f, Bye!\n", dt_float);
Добавлено через 1 минуту
И никаких 4 цифр после запятой, а только 3. Потому что опять же выдавались только миллисекунды.
0
11.05.2021, 21:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2021, 21:00
Помогаю со студенческими работами здесь

Вычисление числа Пи с 15-ю цифрами после запятой
добрый вечер, помогите решить задачку. нужно вычислить число ПИ что бы показывал результат с 15-ю...

вывести число с 2 цифрами после запятой
не понимаю почему ругается компилятор на memo1.Clear; for i := 0 to strtoint(edit1.Text) - 1 do...

Непонятное умножение (проблема с цифрами после запятой)
Здравствуйте, скажите пожалуйста, почему когда я умножаю 4,56 на 3,47 например то у меня в поле...

Вывести число с тремя цифрами после запятой
Э. Кенинг. Эффективное программирование на C++ есть одна задача и в ней таким способом это сделано:...

Вывод n числа символов после запятой без использованиия precision и printf
По факту программа выполняет выражения 1/n и выводит нужное количество знаков после запятой ( то...

Вывести наименшую зарплату на предприятии с двумя цифрами после запятой
Очень-очень вас прошу помогите с задачей На малом предприятии работает определенное количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru