2011-12-15 32 views
1

この数学ベースのクエリでは苦労しています。小数点以下を小数点以下の桁数に変換します。

私は2つの日付の間の秒数に違いがあり、秒数を端数に変換したいと考えています。小数点はうまく働いていますが、この値をどのように分数に変換できるかを把握するのには苦労しています。

たとえば、2つのタイムスタンプ間の週数の差は、4.285714285714286です。私はこれを4 2/7と表現したいと思います。

誰でもJavaScriptでこれを達成する最も効率的な方法を提案できますか?

+1

あなたはいつも効果的な週と日になるでしょうか?もしそうなら、あなたは週数の小数部分を取って7とラウンドを掛けることができます。これはあなたが常に7を超えるものを必要としていることを前提としています。もしその小数部の底にある数字が変わることがあれば、それはずっと難しくなります。 – Chris

+0

直前の分数か、 – hugomg

+0

彼らはいつも7番です。 – BenM

答えて

1

多分私はあなたの質問を理解していないので、これは非常に素朴な答えになる可能性があります。はいの場合は、そう言います。

var 
    a = new Date(2011, 12, 31), 
    b = new Date(2011, 12, 1), 
    weekMilliSeconds = 7 * 24 * 60 * 60 * 1000, 
    fraction = (a - b)/weekMilliSeconds, 
    weeks = Math.floor(fraction), 
    days = Math.round((fraction - weeks) * 7); 

console.log(
    weeks + ' ' + days + '/7' // => 4 2/7 
); 
+0

ええと、この関数は何らかの理由で偽の値を返すようです... – BenM

+0

@BenMどのように* false *。もう少し説明的でなければなりません。 – Yoshi

関連する問題