Рациональные числа Javascript — сохранение знаменателя 1

Мне нужно работать с рациональными числами в Javascript, у которых знаменатель равен 1. Итак, у меня есть некоторое входное значение, скажем, 1024, и мне нужно сохранить его как 1024/1. Конечно, 1024 / 1 просто дает мне 1024. Итак, как я могу получить необработанную рациональную версию?


person ChrisM    schedule 20.11.2015    source источник
comment
Я думаю, что этот пакет может быть полезен: npmjs.com/package/rationals   -  person jianweichuah    schedule 20.11.2015


Ответы (1)


Что ты собираешься делать с рациональными? Если это просто для простой арифметики, вы можете просто написать это самостоятельно.

Ниже приведен пример, вы должны сделать что-то подобное для других операторов.

Надеюсь это поможет

function Rational(n, d) {
    this.n = n;
    this.d = d;
}
Rational.prototype.multiply = function(other) {
    return this.reduce(this.n * other.n, this.d * other.d)
}
Rational.prototype.reduce = function(n, d) {
    //http://stackoverflow.com/questions/4652468/is-there-a-javascript-function-that-reduces-a-fraction
    var gcd = function gcd(a,b){
        return b ? gcd(b, a%b) : a;
    };
    gcd = gcd(n,d);
    return new Rational(n/gcd, d/gcd);
}

var r1 = new Rational(1, 2);
var r2 = new Rational(24, 1);
var result = r1.multiply(r2);
console.log(result); // Rational(12, 1);
console.log(result.n + '/' + result.d); // 12/1
person luanped    schedule 20.11.2015