Math 将表示时间的十进制数转换为小时、分钟、秒
我有一个小数点。此小数的范围介于0和23.999999之间。这个小数代表一个时间。例如,如果小数点为0.25,则它表示的时间为12:15 AM。如果小数点为23.50,则表示的时间为晚上11:30 我有三个变量: -小时数 -会议记录 -秒Math 将表示时间的十进制数转换为小时、分钟、秒,math,date,time,Math,Date,Time,我有一个小数点。此小数的范围介于0和23.999999之间。这个小数代表一个时间。例如,如果小数点为0.25,则它表示的时间为12:15 AM。如果小数点为23.50,则表示的时间为晚上11:30 我有三个变量: -小时数 -会议记录 -秒 使用这个小数点,我如何填写小时,分钟,和秒值?小时应该很简单 1小时内有60分钟,所以取小数部分,乘以60,取整数。再取一次小数,再乘以60,你就有秒了 例如,让我们以数字20.38490 我们知道现在是20小时,或者晚上8点 这就给我们留下了编号.3849
使用这个小数点,我如何填写
小时
,分钟
,和秒
值?小时应该很简单
1小时内有60分钟,所以取小数部分,乘以60,取整数。再取一次小数,再乘以60,你就有秒了
例如,让我们以数字20.38490
我们知道现在是20小时,或者晚上8点
这就给我们留下了编号.38490
乘以60,我们得到23.094分钟
将
.094
乘以60,我们得到5秒。好吧,这里有一个C#的答案,但在大多数语言中,这通常是相同的想法:
int hours = (int)hoursDecimal;
decimal minutesDecimal = ((hoursDecimal - hours) * 60);
int minutes = (int)minutesDecimal;
int seconds = (int)((minutesDecimal - minutes) * 60);
无论使用哪种语言,都可以使用数学函数:MOD和FLOOR/TRUNC 设“dec”为十进制变量
trunc(mod(dec, 1)) => hours
trunc(mod(dec * 60, 60)) => minutes
trunc(mod(dec * 3600, 60)) => seconds
在C#中,您可以使用显式转换将十进制截断为int,例如
int seconds = (int) ((dec * 3600) % 60)
您可以使用floor功能去掉小时数,将分钟数和秒数保留为小时数的一小部分。然后,您可以再次使用楼层功能,在不到一个小时的时间内,去掉这些小步舞曲。然后剩下秒(以小时的分数表示) 下面是一个打印小时和分钟的简单示例,日出是从午夜开始的小数小时
printf( "sunrise %ld:%ld, \n",
(long)floor( sunrise ),
(long)(floor( sunrise * 60 ) - 60 * floor( sunrise )) );
从用户名判断,可能是一种.NET语言:Pint seconds=(minutesadecimal-minutesasantin)*60?将int转换为整数不会对小时部分进行取整,如果剩余部分为>,则会给出错误的结果。5@DavidB到
int
的转换总是向下舍入,而不是向上舍入。我在vb中使用了Cint,它的行为不是这样的,所以它们一定不同于上面提到的!