我需要将表示小时数的浮点数转换为小时数:分钟数:秒数。
如何使用C#。
目前我正在将这个5.4898391027272906浮动时间转换为小时分钟和秒数,我只得到了几小时和几分钟的渴望结果,但不是几秒钟。
以下是我的代码:
double time = 5.4898391027272906;
double hours = Math.Floor(time);
double minutes = Math.Floor(time * 60 % 60);
double seconds = Math.Floor(time * 360 % 360);
结果:小时= 5,分钟= 29,秒= 176
但我想在60秒之间得到一秒钟。
答案 0 :(得分:6)
如何使用TimeSpan.FromHours
方法?
var ts = TimeSpan.FromHours(5.4898391027272906);
Console.WriteLine(ts.Seconds); // 23
不要对时间间隔使用一些整数计算。这完全 TimeSpan
的用途。
顺便说一下,你的代码甚至不会编译。如果没有任何后缀,您的5.4898391027272906
将double
而不是float
,并且double
与float
之间没有隐含的对话。您需要使用f
或F
后缀。此TimeSpan.FromHours
方法将double
作为参数,而不是float
。
答案 1 :(得分:0)
你的原始方法不起作用,因为一小时有3600秒,而不是360,并且因为使用模数这样无论如何都不起作用!您可以从分钟获得秒数,例如29.39分钟* 60%60 = 23.4秒。