将秒(时钟)转换为十进制格式

Converting seconds (clocks) to decimal format

本文关键字:十进制 格式 转换 时钟 将秒      更新时间:2023-10-16

我正在制作一个秒表,我需要像这样输出秒:"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"。

整数之间的除法仍然是整数。将除法形参之一强制转换为实类型(double或float),并将其赋值给另一个实类型的变量。

double elapsedSeconds = (endTime - startTime) / (double)(CLOCKS_PER_SEC);
cout << elapsedSeconds << endl;

formattedSeconds =(double) miliseconds / 1000;

它会给你实数输出