2011-12-15 276 views
1

我可以用这个基于数学的查询来挣扎。将十进制数转换为分数

我有两个日期之间的秒差,并希望将秒数转换为分数。我的小数点运行良好,但我正在努力弄清楚如何将该值转换为小数。

因此,例如,两个时间戳之间的星期差数是4.285714285714286。我想将其表示为4 2/7

任何人都可以建议最有效的方式来实现这个在JavaScript中吗?

+1

它总是会有效的几周和几天,你想要的?如果是这样,那么你可以采取周数的小数部分乘以7和四舍五入。这假定你总是想要超过7的东西。如果你的数字在分数的底部可以改变,那就更困难了...... – Chris 2011-12-15 12:29:43

+0

Arbritrary分数还是只是第七? – hugomg 2011-12-15 12:30:28

回答

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 
);