Преобразовать десятичные дроби в дробные числа ближайших 1/16, используя Fraction.js - PullRequest
0 голосов
/ 30 сентября 2018

Я работаю над старым приложением Angularjs, и мне нужно иметь возможность преобразовывать числа в десятичном формате в дроби ближайшей 1/16.Я искал несколько часов, и один из вариантов, который мне показался лучшим, это Fraction.js .Однако, когда следующие примеры, такие как здесь , я получаю неправильные дроби.Например:

  var convertToFraction = function (decimal) {
    // Round to the neareest 1/16
    var f = new Fraction(decimal);
    var newVal = f.toFraction();

    return newVal;
  };

Я получу 157293/2000", если передам значение 78.6465, 3/2, если передам значение 1.500.Для 78.6465 я бы хотел получить 78 5/8.

Есть ли еще что-то, что мне нужно сделать, чтобы заставить его возвращать значение в правильной форме, а не в неправильной дробной форме?Кроме того, нужно ли мне сделать собственное округление десятичной дроби до ближайшей 1/16, прежде чем передавать значение в Fraction, например?

  var convertToFraction = function (decimal) {
    // Round to the nearest 1/16
    var rounded = (Math.round(decimal * 16) / 16).toFixed(3);
    var f = new Fraction(rounded);
    var newVal = f.toFraction();
    return newVal;
  };

Даже при этом я все еще получаю неправильный формат.

1 Ответ

0 голосов
/ 30 сентября 2018

Чтобы получить правильные дроби, мне просто нужно было передать аргумент true в toFraction():

var newVal = f.toFraction(true);
...