Я работаю над старым приложением 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;
};
Даже при этом я все еще получаю неправильный формат.