Я делаю секундомер, и мне нужно вывести секунды так: «9.743 секунд».Преобразование секунд (часов) в десятичный формат
У меня есть время начала, время окончания и разность, измеренная в часах, и планировал достижение десятичной дроби, разделив разность на 1000. Однако, независимо от того, что я пытаюсь, он всегда будет выводиться как целое число. Вероятно, это что-то маленькое, я не замечаю, но я понятия не имею. Вот мой код:
#include "Stopwatch.h"
#include <iostream>
#include <iomanip>
using namespace std;
Stopwatch::Stopwatch(){
clock_t startTime = 0;
clock_t endTime = 0;
clock_t elapsedTime = 0;
long miliseconds = 0;
}
void Stopwatch::Start(){
startTime = clock();
}
void Stopwatch::Stop(){
endTime = clock();
}
void Stopwatch::DisplayTimerInfo(){
long formattedSeconds;
setprecision(4);
seconds = (endTime - startTime)/CLOCKS_PER_SEC;
miliseconds = (endTime - startTime)/(CLOCKS_PER_SEC/1000);
formattedSeconds = miliseconds/1000;
cout << formattedSeconds << endl;
system("pause");
}
Как я уже говорил, выход целое число. Предположим, что он рассчитан на 5892 такта: выход будет «5».
Поскольку миллисекунд представляет собой целое значение в диапазоне от 0 до 999, деления, что на 1000 всегда будет давать 0 (и даже если вы сделали деление на операцию с плавающей запятой, присвоение дробного значения от 0 до 0,999 к целому числу всегда равно нулю). –
Не полагайтесь на 'clock()', чтобы обеспечить разрешение в миллисекундах. Используйте функции таймера от ''. –
paddy