2014-07-22 49 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; 
}