讓你定義一個宏,說出一年有多少秒:
答案如下:
#define SECONDS_PER_YEAR 60*60*24*365(UL)
“這樣的好處是:寫出公式而不用動手計算,讓編譯器給你計算,省腦子。重點是你還寫出了結果的來源,條理清晰,便於閱讀。還有,那個UL顯示了你對數據大小的嚴謹,”
“切~用你說?誰不知道?”——看到這,很多人一定對這個帖子嗤之以鼻,相信這是很多C語言玩家爛熟於心的一個答案了吧?!
SECONDS_PER_YEAR就是秒每年吧——秒/年!
那麼,一年到底有多少秒?我再換個問法,每年都一樣麼?閏年你又怎麼解決?眾所周知,每四年有一個閏年,這還不是全部,逢百年的時候你必須用年份除以四百,除得開才是閏年。
地球圍繞太陽公轉一周(即360度)的時間應該為365日6時9分10秒,即為一個恆星年。
地球的某點獲得兩次兩次直射的間隔是365日5時48分46秒(更加精確:365天5小時48分45.975456秒),即為一個回歸年。
一個回歸年折算成小數,大概是365.2422日,400年裡多出了96.88天,而按四年一個閏年算,400年裡少3個閏年,即總共97個閏年,閏年是調節回歸年的。前邊也提了閏年規則是四年一補,補多了要減去點,如果按恆星年補,四年一個閏年還不夠,哪會讓你四百年內還少三個閏年呢。
看到這裡,相信各位小伙伴已經有答案了:
#define 365*24*60*60+5*60*60+48*60+46(UL) //很有條理很清晰吧?怎麼樣,我說,你還不如用計算器了~~一定要加上文字注釋~!!!
不過還有意外,他問的會不會是恆星年?恆星年就按如下定義
#define 365*24*60*60+6*60*60+9*60+10(UL) //一定要加上文字注釋~~告訴他這是恆星年
我們也看到,沒有什麼東西是那麼精確的,如果按365天5小時48分45.975456秒算,那應該使用浮點數
31556925.9754456(這還不是絕對精度~~~)
如果按這個數,32位的浮點還是夠用的。
怎麼樣,躺著中槍了吧,這麼簡單的C語言你都不會,回去面壁吧。
不過還有方法,你跟他說你用日歷年計算:
#define SECONDS_PER_YEAR 60*60*24*365(UL)繞回來了
深藏功與名,叫我胡學究
帶上你的貞操和邏輯,歡迎較真抬槓,轉發請注明出處。