2011-06-11 268 views
7

我聽說可以使用大多數編程語言中的模數%運算符來完成此操作。真正的問題是,如何?我不熟悉模數是如何工作的,所以我在過去使用它時遇到了困難。鑑於1970年以來的現在時間,1307758473.484,我如何計算多少年即幾天,即幾小時,以及使用模數的幾分鐘?將秒數拆分爲幾天,幾小時,幾分鐘和幾秒?

我基本上想要像這樣格式化它:「5年,10天,12小時,7分鐘和18.56秒」。我將如何做到這一點?我非常有興趣瞭解這個背後的邏輯,並且對而不是感興趣的是一個簡單的插入式解決方案。

回答

19

當你做整數除法,你得到商和餘數。例如,

5 divided by 3 is quotient 1 with remainder 2. 

在編程語言中,這通常被表述爲:

5/3 # => 1 
5 % 3 # => 2 

你想要的轉換隻是這個repeatation。 從下單元開始更容易,更高。

首先,你必須

  • 1307758473.484 seconds

從60年代秒1分鐘,

1307758473.484/60 = 21795974 (intended to be integer division) 
1307758473.484 % 60 = 33.484, 

它是一樣的

  • 21795974 minutes 33.484 seconds

由於60分鐘1小時,

21795974/60 = 363266 
21795974 % 60 = 14 

它進一步相同

  • 363266 hours 14 minutes 33.484 seconds

現在,有難度的一點點。大多數日子是24小時。當有閏秒時,則不是。如果忽略閏秒,並假定胃1天24小時,然後,通過執行計算,

363266/24 = 15136 
363266 % 24 = 2 

,進一步一樣

  • 15136 days 2 hours 14 minutes 33.484 seconds

同樣,大多數年份是365天。當有一個閏日(年)時,它不是。如果你忽略了飛躍天,假設1年的365天,然後通過執行計算,

15136/365 = 41 
15136 % 365 = 171 

,進一步一樣

  • 41 years 171 days 2 hours 14 minutes 33.483 seconds
4

模數在執行整數除法時返回餘數。

我認爲它最容易理解如何使用國防部首先向後解決問題。

讓我們從小時,分鐘和秒開始簡單 - 精確的1小時10分30秒。

首先,你有30秒。這很容易 - 這只是30.沒有腦筋。 現在添加分鐘數 - 將分鐘數確定爲乘以60的秒數。因此,10分30秒= 630秒。

現在我們看看mod是如何工作的 - 因爲如果你除以60得到10.5,但是如果你忽略了分數(整數除法),那麼你得到10。

所以,如果你MOD 630 60你30 - 爲分鐘分割時630 30

所以決定分,秒,除以60的餘留下來,並通過60秒國防部。

現在添加一小時。一小時= 60分鐘,60分鐘爲60 * 60秒,1小時= 3600秒。 3600 + 600 + 30 = 4230秒。

三千六百分之四千二百三十零(1小時)= 1 - 所以我們有1小時

4230%(MOD)3600 = 630 - 抓住這個,現在我們處理分鐘。

所以如果進一步充實了這一點,並添加一個天 - 1天= 24小時數= 24 * 3600 = 86400 86400 + 3600 + 600 + 30 = 90630

八萬六千四百分之九萬〇六百三十零= 1 - > 1天

90630%86400 = 4230 - >秒遺留

三千六百分之四千二百三十零= 1 - >1小時

並重覆上述邏輯。

希望可以幫助清理它 - 你不斷重複這個迭代,你可以做幾個星期和幾年,但是月份是特殊的,因爲它們是不規則的,閏年也是如此。

+0

很好的回答。 @TK,將其與進行更改並將數字從基數x轉換爲基數y進行比較。這裏有一個共同的模式。 – 2011-06-11 02:40:11

相關問題