我有一个十进制数,其范围在0到23.999999之间。这个十进制数代表一个时间。例如,如果这个十进制数是0.25,则它所代表的时间是上午12:15。如果这个十进制数是23.50,则它所代表的时间是晚上11:30。
我有三个变量: - 小时 - 分钟 - 秒
使用这个十进制数,如何填写小时、分钟和秒的值?
我有三个变量: - 小时 - 分钟 - 秒
使用这个十进制数,如何填写小时、分钟和秒的值?
好的,这里是一份 C# 的答案,但在大多数语言中都有相同的思路:
int hours = (int)hoursDecimal;
decimal minutesDecimal = ((hoursDecimal - hours) * 60);
int minutes = (int)minutesDecimal;
int seconds = (int)((minutesDecimal - minutes) * 60);
int
时,总是向下取整,而不是向上取整。 - Domenic您可以使用 floor 函数来去除小时,并将分钟和秒钟作为小时的分数留下。然后,您可以再次使用 floor 函数来去除分钟作为小时的分数。这样,您就只剩下秒(作为小时的分数)。
以下是一个简单的示例,打印小时和分钟,日出时间以自午夜以来的小时分数表示。
printf( "sunrise %ld:%ld, \n",
(long)floor( sunrise ),
(long)(floor( sunrise * 60 ) - 60 * floor( sunrise )) );
trunc(mod(dec, 1)) => hours
trunc(mod(dec * 60, 60)) => minutes
trunc(mod(dec * 3600, 60)) => seconds
int seconds = (int) ((dec * 3600) % 60)