Код: Выделить всё
(quotient (expt 1000 999) 998001)
(floor (/ (expt 1000 999) 998001))
Проблема, которая у меня есть, заключается в том, что в моей схеме интерпретируется в Javascript, я получил +inf.0 , потому что он создает поплавок). Коэффициент: < /p>
Код: Выделить всё
(define (quotient a b)
"(quotient a b)
Return quotient from division as integer."
(typecheck "quotient" a "number")
(typecheck "quotient" b "number")
(if (zero? b 0)
(throw (new Error "quotient: division by zero"))
(let ((quotient (/ a b)))
(if (integer? quotient)
quotient
(if (> quotient 0)
(floor quotient)
(ceiling quotient))))))
Код: Выделить всё
['floor', 'ceil', 'round'].forEach(fn => {
LNumber.prototype[fn] = function() {
if (this.float || LNumber.isFloat(this.__value__)) {
return LNumber(Math[fn](this.__value__));
} else {
return LNumber(Math[fn](this.valueOf()));
}
};
});
(function() {
var map = { ceil: 'ceiling' };
['floor', 'round', 'ceil'].forEach(fn => {
var name = map[fn] ? map[fn] : fn;
global_env.set(name, doc(name, function(value) {
typecheck(name, value, 'number');
if (value instanceof LNumber) {
return value[fn]();
}
}, `(${name} number)
Function that calculates the ${name} of a number.`));
});
})();
< /code>
Как вы можете видеть, он просто использует math.floor и конвертируйте номер в плавание (this.valueOf()
Как Floor , ceil и функции Tround должны выглядеть для создания номера Bigint, когда аргумент является точным? Какой алгоритм я должен использовать?
Подробнее здесь: https://stackoverflow.com/questions/796 ... onals-in-j