dst*_*arh 4 javascript math decimal fractions
我们需要将计算出的值(例如3.33333000540733337)转换为3 1/3.我试过的任何库如https://github.com/peterolson/BigRational.js都会将其转换为最准确的有理数,而我只关注近似有理数,到.01有效小数.
在ruby中,我们目前使用Rational(1.333).理性化(Rational(0.01)),它给出1作为整数,1作为分子,3作为分母.
对可能有用的算法的任何想法都会很棒.
你可以使用https://github.com/peterolson/BigRational.js库来使用这样的函数:
function rationalize(rational, epsilon) {
var denominator = 0;
var numerator;
var error;
do {
denominator++;
numerator = Math.round((rational.numerator * denominator) / rational.denominator);
error = Math.abs(rational.minus(numerator / denominator));
} while (error > epsilon);
return bigRat(numerator, denominator);
}
Run Code Online (Sandbox Code Playgroud)
它将返回一个bigRat对象.您可以使用以下方法检查您的示例:
console.log(rationalize(bigRat(3.33333000540733337),0.01));
Run Code Online (Sandbox Code Playgroud)