gpt4 book ai didi

c - 在c中的int值的开头添加0

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:37 25 4
gpt4 key购买 nike

我在 WinCE7 中,要获取当前时间,我正在使用 GetLocalTime(&systemTime);。此函数给出当前时间的值。现在,如果毫秒为 81,它将显示为 81,因此当我减去两个时间值时会发生错误。例如:time1 : 12:34:13:851 & time2: 12:34:14:81。现在我需要减去秒和毫秒。因此,使用 sprintf,我提取秒和毫秒并将它们放入 time1time2 中:

sprintf(time1,"%d.%d",systemTime.wSeconds,systemTime.wMilliseconds) 

sprintf(time2,"%d.%d",systemTime.wSeconds,systemTime.wMilliseconds)

我正在使用 atoftime1 & time2 转换为 float。现在 time1 是 13.851 time2 是 14.81 . time2 的毫秒数实际上是 081,但它显示 81,因此在减去它时将其视为 810,这会给出错误的值。

time2-->  14.810              14.081
time1--> 13.851 13.851
-------- ---------
result 0.959(wrong) 0.23(correct)

因此,为了消除此错误,我想到了计算毫秒数,如果它是 2,则在开始时添加 0。所以我做了:

double digits = (floor (log10 (abs (milliseconds))) + 1); //calculate digits
if(digits == 2) //if milliseconds contains 2 digits, we need to add 0 at starting
{
sprintf(newMS,"0%d",milliseconds); //adding 0 to milliseconds
finalMilliseconds = atoi(newMS); //newMS is in char so converting it into integer and storing the value in finalMilliseconds
}

问题就出现在这里。假设 milliseconds = 18,所以 newMS = 018finalMilliseconds 又是 18

请建议任何其他转换方式或任何其他在开始时添加 0 的方式

最佳答案

根据 SYSTEMTIME 的文档来自 MSDN:

It is not recommended that you add and subtract values from theSYSTEMTIME structure to obtain relative times. Instead, you should

Convert the SYSTEMTIME structure to a FILETIME structure.
Copy the resulting FILETIME structure to a ULARGE_INTEGER structure.
Use normal 64-bit arithmetic on the ULARGE_INTEGER value.

example here会给你一些关于如何开始的想法。

关于c - 在c中的int值的开头添加0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37360278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com