使用 Fraction.js将小数转换为最接近的 1/16 的分数



我正在开发一个旧的 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;
};

如果我传入的值为78.64653/2,如果我传入的值为1.500,我会得到157293/2000"。对于78.6465,我想得到78 5/8

我还需要做些什么来让它以正确的形式返回值,而不是不正确的分数形式?另外,在将值传递给Fraction之前,我是否需要将小数四舍五入到最接近的 1/16 ?

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

即使这样,我仍然得到不正确的格式。

为了得到正确的分数,我只需要将true参数传递给toFraction()

var newVal = f.toFraction(true);

最新更新