Как JavaScript Date.getTime () (в миллисекундах) отображается на 64-разрядное число с плавающей запятой?

1

Я запутался в объекте JavaScript Date и getTime(). От: Минимальная и максимальная дата

В нем говорится, что фактические max и min. количество миллисекунд (мс), представляемое объектом JS Date (-/+) 8.640.000.000.000.000 мс с 01 января 1970 г. UTC.

Однако для 8.640.000.000.000.000 требуется 53 бит.

С другой стороны, все JS-номера представляют собой 64-битные поплавки с только 52 дробными битами (исключая знаковый бит).

Как JS может хранить результат Date.getTime() когда Date является максимальным или минимальным значением даты? Для этого нужно использовать один из битов экспоненты, правильно?

Означает ли это также, что преобразование Date JS (через его количество) в int64 (например, для использования в Qt) не является строго возможным?

  • 3
    52 дробных бита равны 53 значащим битам . «Поскольку мы используем двоичный код (только 0 и 1), один бит в мантиссе неявно равен 1 (и трюк с плавающей запятой, и двойной используют этот трюк), когда число ненулевое».
  • 1
    Планируете более чем на 100 тысяч лет вперед?
Показать ещё 1 комментарий
Теги:
date
qt
double
gettime

1 ответ

0

JavaScript представляет числа, используя формат двойной точности (64 бит) IEEE-754. он дает вам точность 53 бит. JS внутренне хранит как 64-битные числа с плавающей запятой, а даты JavaScript внутренне хранятся как миллисекунды с эпохи. Вы можете использовать метод getTime() JavaScript. Я вернусь к значению эпохи. Это значение эпохи можно использовать в Qt как значение эпохи или создать дату из этого значения эпохи, используя

fromMSecsSinceEpoch (qint64 мс)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню