Javascript 将十进制的周数转换为分数

Javascript 将十进制的周数转换为分数,javascript,math,decimal,fractions,Javascript,Math,Decimal,Fractions,我正在努力解决这个基于数学的问题 我有两个日期之间的秒差,我想把秒数转换成分数。我的小数工作得很好,但我正在努力找出如何将这个值转换成分数 因此,例如,两个时间戳之间的周数差为4.285714285714286。我想将其表示为4 2/7 有人能提出用JavaScript实现这一点的最有效方法吗?也许我不理解你的问题,所以这可能是一个非常幼稚的答案。如果是,就这么说吧 var a = new Date(2011, 12, 31), b = new Date(2011, 12, 1),

我正在努力解决这个基于数学的问题

我有两个日期之间的秒差,我想把秒数转换成分数。我的小数工作得很好,但我正在努力找出如何将这个值转换成分数

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


有人能提出用JavaScript实现这一点的最有效方法吗?

也许我不理解你的问题,所以这可能是一个非常幼稚的答案。如果是,就这么说吧

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

也许我不明白你的问题,所以这可能是一个非常天真的答案。如果是,就这么说吧

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

你想要的总是几周几天吗?如果是这样的话,你可以只取周数的小数部分,乘以7,然后四舍五入。这假设你总是想要超过7的东西。如果分数底部的数字可以改变,那就更难了…任意分数还是仅仅七分之一?它们总是七分之一。你想要的总是几周几天吗?如果是这样的话,你可以只取周数的小数部分,乘以7,然后四舍五入。这假设你总是想要超过7的东西。如果分数底部的数字可以改变,那就更难了……任意分数还是仅仅七分之一?它们永远都是七分之一。@BenM以何种方式为假。“你必须更具描述性一点。”本姆在哪方面是错的。你必须更具描述性。