将值划分为分数输出javascript

时间:2014-01-29 15:06:53

标签: javascript math

示例:

var x = 1/2
var y = 2/1

z=x/y ( 1/2 Divded 2/1) = 1/4 (Answer)

这可以通过javascript实现,id不需要十进制答案,我希望输出为1/4

3 个答案:

答案 0 :(得分:1)

如前所述,使用library,这是一项非常简单的任务:

var x = new Fraction(1, 2);
var y = new Fraction(2, 1);

var z = x.div(y); // ( 1/2 Divded 2/1)

console.log(z.toFraction()); // 1/4 (Answer)

答案 1 :(得分:0)

您可以使用有理数而不是浮点值来编写数学。你可能想要使用一个库,虽然我现在不能说出一个。但是搜索任意大小的有理数应该会产生可用的结果。

或者您使用浮点数学进行计算,然后通过有理数找到结果的近似值。这样做的方法是通过continued fractions。在这里选择一个近似值是一个折衷方案:你允许的数值误差越多,分子和分母越小,但这种合理表示与全理性计算产生的机会不同的可能性越大。

答案 2 :(得分:0)

function run( x, y )
{
    var z;

    z = x/y;

    //return '('+fracFormat( x )+')/('+fracFormat( y )+') -> '+fracFormat(z);
    //return '('+z+') -> '+fracFormat(z);
    return fracFormat(z);
}

function fracFormat( v )
{   
    var x,y,z;

    if( v === parseInt( v ) )
    {
        return ''+v;
    }
    else
    {
        x = 1/v;
        y = parseInt( x );

        if( x === y )
        {
            return '1/'+x;
        }
        else
        {
            z = (''+x).split('.')[1];
            x = parseInt( y+''+z );
            v = parseInt( '1'+zeros( z.length ) );
            y = gcf( v,  x );

            v = v/y;
            x = x/y;

            return v+'/'+x;
        }
    }
}

function zeros( total )
{
    var i, result = '';

    for( i=0; i<total; i++ )
    {
        result += '0';
    }

    return result;
}

function gcf( a, b )
{
    if( b == 0 )
    {
        return a;
    }
    else
    {
        return gcf( b, a % b );
    }
}

var x = 1.5/2.75
,   y = 2.25/1.1
;
console.clear();
console.log( run( x, y ) );// output = 4/15