将十进制时间转换为小时和分钟,以便在C ++中显示

时间:2016-02-23 12:16:35

标签: c++

这是我当前作业的一部分,这些是说明。

  

printEvent() - 一个“漂亮地打印”事件的函数   安慰。时间应该以hh:mm格式打印,而不是以   十进制数。例如,事件西班牙语101,从10.0开始   并以11.5结尾应打印为10:00 - 11:30 Spanish 101

目前开始时间和结束时间是在数组中,所以我知道如何通过for循环访问它们但我不知道如何分割11.5或只是将其转换为11:30并显示它。

编辑:感谢Paddy,我想我现在知道如何解决它,尽管它可能不是最有效的方法。我只是将每个浮动数字放在地板上,然后从原始数字中减去它以获得差异。乘以6得到分钟。谢谢你们!

3 个答案:

答案 0 :(得分:2)

这只是了解单位的情况。您的时间是小时。若要转换为分钟,则乘以60.如果将其截断为整数,则可以进行整数除法(60)以获得小时数,并使用整数模数(按60)得到分钟。

double time = 10.5;
int time_mins = (int)floor( time * 60.0 );
int hours = time_mins / 60;
int minutes = time_mins % 60;

如果您不允许使用任何类型的模运算,则可以使用稍微的变化:

double time = 10.5;
int hours = (int)floor( time );
int minutes = (int)( 60.0 * (time - (double)hours) );

答案 1 :(得分:0)

1小时30分钟转换为1.5小时1小时+30 / 60分钟。因此,当您尝试向后转换时,请将逗号后面的所有内容加上6,然后乘以6分钟。

答案 2 :(得分:0)

首先根据点(。)分割开始和结束时间 然后将第一部分留下来作为分钟保存,然后取正确的部分并将其除以60,例如30/60。 你可以做到吗