Что значит «1е»? - PullRequest
       2

Что значит «1е»?

0 голосов
/ 19 апреля 2019

Я видел какой-то код в сети и пытаюсь понять, что он делает. В частности, я никогда раньше не видел конвенцию "1е".

time_t currentTime;
time(&currentTime);
uint64_t currentTime = (uint64_t)currentTime * 1e6;

Ответы [ 4 ]

4 голосов
/ 19 апреля 2019

Это 1e6, а не le6, и это означает 1 * 10 ^ 6 или 1000000.0

Это научная запись.

4 голосов
/ 19 апреля 2019

В C 1e6 имеет тип double, и его значение в 1 раз 10 увеличивается до 6-й степени. Это эквивалентно 1000000.0.

Не дайте себя одурачить другими ответами: 1e6 означает не означает то же самое, что 1000000 в C, потому что 1e6 имеет тип double, тогда как 1000000 будет иметь некоторые целочисленный тип. Существуют большие различия в поведении между типами с плавающей точкой, такими как double и целыми типами.

Синтаксис для записи чисел, таких как 1e6, определен в разделе «Плавающие константы» спецификации C11 (и более ранних версий тоже). Это вроде научная запись .

2 голосов
/ 19 апреля 2019

Я видел какой-то код в сети и пытаюсь понять, что это такое делает. В частности, я никогда раньше не видел конвенцию "1е".

Как уже упоминали другие, практически говоря, 1e6 - это научная запись для 10 ^ 6, которая равна 1000000 или более известна как 1 миллион. Но, как уже упоминалось, Дэвид, на самом деле это трактуется как double в C, а значение на самом деле 1000000.0.

Но я чувствую, что эти ответы сосредоточены только на этом конкретном фрагменте предоставленного вами кода, а не на всем, поэтому я хотел предоставить вам дополнительный контекст, поскольку вы пытаетесь понять, какой код делает.

Для этих строк:

time_t currentTime;
time(&currentTime);

time берет указатель time_t и оперирует им, по-видимому, записывая в него некоторое подобие времени.

Следующая строка на самом деле недопустима, потому что currentTime уже объявлен, поэтому давайте сделаем небольшую модификацию:

uint64_t convertedTime = (uint64_t)currentTime * 1e6;

Эта строка преобразует time_t currentTime в 64-разрядное целое число без знака, затем умножает его на 1e6 или 1000000.0. Это, вероятно, делается для конвертации единиц. Например, предположим, что time записал время в микросекундах (1e-6, 10 ^ -6 или .000001) в currentTime, поэтому умножение его на 1e6 даст вам секунды. И я говорю, что только из-за того, что кажется здесь преобразованием единиц, а не потому, что я на самом деле знаю , что time сделал (то есть здесь я беру код за чистую монету).

1 голос
/ 19 апреля 2019

Это 1e6

Научная запись для Math.pow(10, 6) == 1000000

/ * да, вы можете сделать это с помощью любого стандартного языка программирования, включая C * /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...