我有一个小数。该小数的范围介于0和23.999999之间。该小数表示时间。例如,如果小数是0.25,那么它表示的时间是12:15 AM。如果小数是23.50,它代表的时间是晚上11:30。
我有三个变量: - 小时 - 分钟 - 秒钟
使用此小数,如何填写Hours
,Minutes
和Seconds
值?
答案 0 :(得分:11)
嗯,这是C#中的答案,但在大多数语言中它通常是相同的想法:
int hours = (int)hoursDecimal;
decimal minutesDecimal = ((hoursDecimal - hours) * 60);
int minutes = (int)minutesDecimal;
int seconds = (int)((minutesDecimal - minutes) * 60);
答案 1 :(得分:2)
时间应该非常简单。
1小时内有60分钟,所以得到小数部分,乘以60,取整数。再次取小数,再将它再乘以60,就可以得到秒数。
例如,我们取数字20.38490
我们知道现在是20小时或晚上8点。
这会给我们留下号码.38490
乘以60,我们得到23.094分钟。
将.094
乘以60,我们得到5秒。
答案 2 :(得分:1)
你可以使用地板功能去除时间,并将minuites和秒留下一小时。然后你可以再次使用地板功能来剥离minuites,只需一小时。然后,您将获得秒数(以小时为单位)
下面打印小时和分钟日出的简单示例是从午夜起的小时数
printf( "sunrise %ld:%ld, \n",
(long)floor( sunrise ),
(long)(floor( sunrise * 60 ) - 60 * floor( sunrise )) );
答案 3 :(得分:0)
无论使用何种语言,您都可以使用数学函数执行此操作: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)