Как реализовать схему схемы Float, CeIL и округлить, которые работают над точными обоснованиями в JavaScript?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать схему схемы Float, CeIL и округлить, которые работают над точными обоснованиями в JavaScript?

Сообщение Anonymous »

Я только что обнаружил об этих двух выражениях в схеме: < /p>

Код: Выделить всё

(quotient (expt 1000 999) 998001)
(floor (/ (expt 1000 999) 998001))
Они возвращают Bigint, который выглядит так, как это 100200300 ... 999 (со всеми числами, кроме 998).
Проблема, которая у меня есть, заключается в том, что в моей схеме интерпретируется в 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 :

Код: Выделить всё

['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()
на Rationals Возвращает значение float/nude).
Как Floor , ceil и функции Tround должны выглядеть для создания номера Bigint, когда аргумент является точным? Какой алгоритм я должен использовать?

Подробнее здесь: https://stackoverflow.com/questions/796 ... onals-in-j
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»