2013-07-18 63 views
0

反正有分號而不是整數的小數。就像我有一個3.99的數字一樣,我想只將小數除以1.66667。我想這樣做是因爲3.99應該等於3分59秒,所以我寧願讓它讀取3.59而不是3.99。號碼的小數部分只有

這是我必須返回現在的時間的代碼,順便說一句,它是從一個程序返回一個時間,告訴你有多少時間,直到東西到期。但用作完整的兩位十進制數字格式。

function GetDiff(dt) { 
    sMins = " Min"; 
    sHours = " Hours"; 
    sDays = " Days"; 
    sSecs = " Secs"; 

    if (Math.abs(DateDiff("s", now, dt)) < 86400) { 
     if (Math.abs(DateDiff("s", now, dt)) <= 3600) { 
      return ((Math.floor(Math.abs(
        DateDiff("s", now, dt)/60) * 100)/100 
        ).toFixed(2) + sMins); 
     } 
     else 
     { 
      return ((Math.floor(Math.abs(
        DateDiff("s", now, dt)/3600) * 100)/100 
        ).toFixed(2) + sHours); 
     } 
    } 
    else 
    { 
     return ((Math.floor(Math.abs(
       DateDiff("s", now, dt)/86400) * 100)/100 
       ).toFixed(2) + sDays); 
    } 
} 
+0

我想不出任何理智的編碼,其中3.99可能代表3分59秒。你確定你想做什麼是有道理的嗎? – user2357112

+0

@ user2357112我認爲這意味着3.99分鐘。 – Mike

+0

3.99分鐘等於3分59秒我希望它的格式爲3:59分鐘不是3.99我的計時器countind下來我想要的時間格式不是數字格式! – chriswiec

回答

1

你獲得分鐘 - 3,和0.99分鐘 只需0.99 * 60拿到秒 ,並追加到分鐘 迴歸 「3」 + + 「59" + sMins

」。」

但不建議顯示「。」對於這種情況....

+0

因此,我擁有的代碼並不總是3.99分鐘,這是腳本從數據庫中提取的示例,告訴測試何時到期。我將如何插入腳本來執行此操作。如果超過60分鐘,它會進入小時,在這種情況下,我需要2.50小時,這是2小時50分鐘,而不是2小時,這與現在的情況相同,與分鐘相同。 – chriswiec

+0

你從服務器上得到什麼? 3.99? 請列出您的輸入和預期輸出? – Horst

+0

直到測試到期的時間來自數據庫,因此它可以是1-59分鐘,1-23小時以及23.99小時以上的任何時間,這是很好的方式。 – chriswiec

1

假設我們正在談論3.99分鐘,我會開始將它們轉換爲秒(我們真正關心的單位)。然後用總秒數除以60,然後用Math.floor去除剩餘部分,得到分鐘數。然後,您可以將總數秒模數爲60的結果放在「剩餘秒數」中。

var decimalMinutes = 3.99; 

var totalSeconds = decimalMinutes * 60; 
var totalMinutes = Math.floor(totalSeconds/60); 
var remainingSeconds = Math.floor(totalSeconds % 60); 

// Outputs 3:59 
console.log(totalMinutes + ":" + remainingSeconds); 

// Float of 3.59 
console.log(parseFloat(totalMinutes + "." + remainingSeconds)); 

// Float of 3.59 without type juggling 
console.log(totalMinutes + (remainingSeconds/100)); 

Fiddle

+0

因此3.99分鐘就是一個例子,它可以是1-59分鐘和1-24小時的任何時間。另外我需要知道如何插入我的腳本任何幫助表示讚賞。 – chriswiec

+0

它還在十分鐘內嗎?即10小時15分30秒= 615.5還是還有另外一種你沒告訴我們的格式? – Mike

+0

好吧,如果你看看我發佈的腳本,它會返回幾分鐘和幾天,但我只需要將分鐘和小時更改爲分鐘/秒格式或一小時/分鐘格式。 – chriswiec

1

可以使用number % 1得到一個數的小數部分:

var number = 3.99;     
alert((number % 1)/1.666667);   // result: 0.59399..... 
alert(Math.floor((number % 1) * 60)); // result: 59 
+0

仍然在這個數字是一個計時器倒計時。我如何實現我的腳本? – chriswiec

1

如何:

var number = 3.99, 
    percentOfSeconds = number - Math.floor(number), // result: .99; 
    seconds = Math.floor(percentOfSeconds * 60); // result 59 

這不考慮到前導零等。

+0

那麼我怎麼把它插入到我的腳本中呢? – chriswiec

+0

我會先清理您的代碼,以便更輕鬆地使用和閱讀。例如,製作'round'函數'Math.round(x * 100)/ 100'。這將刪除重複的代碼並使其更易於閱讀。此外,由於您始終控制日期的順序,因此不需要所有這些「Math.abs」。之後,看分鐘部分。我會在幾分鐘內將它設置爲一個變量,而不用鋪設地板。然後,您可以應用我的代碼並將結果合併到返回值中。 –

+0

我不知道該怎麼做。我幾乎沒有能夠讓它在十進制之前返回時間,因爲它只是一個整數。我可以用小數點格式得到它的唯一方法是將math.floor添加到math.abs中,然後像我一樣分開。否則.tofixed將只返回.00而不做任何更改。 – chriswiec