Почему Math.floor возвращает двойное?

private async authenticate(oldUser: User) {
    try {
        await this.authService.auth(this.oldUser).toPromise();            
        return;
    } catch (reject) {
        return;
    }
}
95
задан Gama11 27 April 2019 в 14:37
поделиться

4 ответа

По данным того же Javadoc:

, Если аргумент NaN или бесконечность или положительный нулевой или отрицательный нуль, то результат совпадает с аргументом. Не может сделать этого с int.

самое большое double значение также больше, чем самое большое int, таким образом, это должно было бы быть long.

76
ответ дан Gama11 24 November 2019 в 05:53
поделиться

Это для точности. Двойной тип данных имеет мантиссу на 53 бита. Среди прочего это означает, что двойное может представить все целое до 2^53 без потери точности.

при хранении такого большого количества в целом числе, Вы получите переполнение. Целые числа только имеют 32 бита.

Возврат целого числа как двойное является правильным поступком здесь, потому что это предлагает намного более широкий полезный диапазон числа, чем целое число могло.

14
ответ дан Nils Pipenbrinck 24 November 2019 в 05:53
поделиться

Что Вы хотели бы, чтобы это возвратило, если бы Вы давали ему двойное большее, чем самый большой интервал или долго?

(По общему признанию, если это больше, чем самое большое долго, точность будет низкой так или иначе - это не может быть ближайшее теоретическое целое число - но несмотря на это...)

3
ответ дан Jon Skeet 24 November 2019 в 05:53
поделиться

Так, чтобы ошибка и другой не целочисленные значения могли правильно расположиться каскадом через ряд вычислений.

, Например, при питании Не числа (NaN) в Math.floor оно проведет его.

, Если это возвратило целое число, это не могло бы провести их состояние или ошибки, и Вы могли бы получить плохие результаты более раннего вычисления, которые выглядят хорошими, но являются неправильными после последующей обработки.

-Adam

0
ответ дан Adam Davis 24 November 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: