使用 Fraction.js 将小数转换为最接近 1/16 的分数
Convert decimals to fraction of nearest 1/16 using Fraction.js
我正在开发一个旧的 Angularjs 应用程序,我需要能够将十进制格式的数字转换为最接近 1/16 的分数。我已经搜索了几个小时,我发现似乎最好的一个选项是 Fraction.js. However, when following examples such as here,我得到了不正确的分数。例如:
var convertToFraction = function (decimal) {
// Round to the neareest 1/16
var f = new Fraction(decimal);
var newVal = f.toFraction();
return newVal;
};
如果我传入 78.6465
的值,我得到 157293/2000"
,如果我传入 1.500
的值,我得到 3/2
。对于 78.6465
,我想得到 78 5/8
。
我还需要做些什么才能使它成为 return 正确形式的值,而不是不正确的分数形式?另外,在将值传递给 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);
我正在开发一个旧的 Angularjs 应用程序,我需要能够将十进制格式的数字转换为最接近 1/16 的分数。我已经搜索了几个小时,我发现似乎最好的一个选项是 Fraction.js. However, when following examples such as here,我得到了不正确的分数。例如:
var convertToFraction = function (decimal) {
// Round to the neareest 1/16
var f = new Fraction(decimal);
var newVal = f.toFraction();
return newVal;
};
如果我传入 78.6465
的值,我得到 157293/2000"
,如果我传入 1.500
的值,我得到 3/2
。对于 78.6465
,我想得到 78 5/8
。
我还需要做些什么才能使它成为 return 正确形式的值,而不是不正确的分数形式?另外,在将值传递给 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);