我正在使用旧的Angularjs应用,因此我需要能够将十进制格式的数字转换为最接近的1/16的分数。我已经搜寻了几个小时,而我发现最好的一个选择是Fraction.js。但是,当遵循诸如here之类的示例时,我得到的分数不正确。例如:
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
。
我还需要做其他事情来使它以正确的形式而不是不正确的分数形式返回值吗?另外,在将值传递给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;
};
即使那样,我仍然得到不正确的格式。
答案 0 :(得分:0)
要获得适当的分数,我只需要将true
参数传递给toFraction()
:
var newVal = f.toFraction(true);