2014-07-22 27 views
0

Excel中文本函数的一个功能是将低于1的任何浮点值转换为HH:mm格式。 所以如果我做文本(0.756635,“HH:MM”),它会给我18:09。 我想知道这是如何工作的。问题是,我正在将我的代码更改为C,因此我需要在C中使用类似的函数,以将float更改为该格式。 有没有可以帮助我的图书馆?还是有人知道如何在Excel中的文本函数的作品?C中的Excel文本函数

回答

1

基本上整天(24小时)等于1

每小时等于1/24 = 0.0416666667

每分钟是等于1 /(24 * 60)= 0.0006944444

每秒等于1 /(24 * 60 * 60)= 0.0000115741

For E.g 0.756635 
HH: Integer Part of 0.756635*24=18 
MM: Integer Part of MOD(0.756635*24,1)*60=09 

完成惯例:

=CONCATENATE(A1*24-MOD(A1*24,1)&":"&MOD(A1*24,1)*60-MOD(MOD(A1*24,1)*60,1)&":"&ROUND(MOD(MOD(A1*24,1)*60,1)*60,0)) 

,如果你想3点05分10秒,你需要做3/24 + 10 /(24 * 60)+ 10 /(24 * 60 * 60),你会得到,如果你的号码

在确定将其算到秒,你可以用这个公式(从时间数)

=HOUR(H27)/24+MINUTE(H27)/(24*60)+SECOND(H27)/(24*60*60) 

我希望这可以帮助,您可以调整的公式来计算它在支持模

0

这是任何代码基本上十进制格式的天。所以如果假设你有0.25的价值,你乘以24得到小时。如果小时数有小数点,则将小数点右边乘以60,得到分钟数。如果在几分钟内出现小数点,则将小数点右侧乘以60得到秒数。

2
#include <stdio.h> 
#include <math.h> 

int main(void) 
{ 
    double x = 0.756635; 
    double h, m; 

    x = x * 24; 
    m = modf(x, &h) * 60; 
    printf("%02d:%02d\n", (int)h, (int)m); 
    return 0; 
} 

输出:

18:09 

如果你想避免math.h

#include <stdio.h> 

int main(void) 
{ 
    double x = 0.756635; 
    double h, m; 

    x = x * 24; 
    h = (int)x; 
    m = (x - h) * 60; 
    printf("%02d:%02d\n", (int)h, (int)m); 
    return 0; 
}