示例:
var x = 1/2
var y = 2/1
z=x/y ( 1/2 Divded 2/1) = 1/4 (Answer)
这可以通过javascript实现,id不需要十进制答案,我希望输出为1/4
答案 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