“1e”是什么意思?

Joh*_*ith 8 c

我在网上看到了一些代码,我正在尝试弄清楚它在做什么。特别是,我以前从未见过“1e”约定。

time_t currentTime;
time(&currentTime);
uint64_t currentTime = (uint64_t)currentTime * 1e6;
Run Code Online (Sandbox Code Playgroud)

Dop*_*nop 15

那是 1e6,不是 le6,它的意思是 1 * 10^6 或 1000000.0

它是科学记数法。

  • 不过,格雷森先生是正确的:它实际上意味着“100000.0”,而不是“100000”。 (4认同)

小智 6

我在网上看到了一些代码,我正在尝试弄清楚它在做什么。特别是,我以前从未见过“1e”约定。

正如其他人提到的,实际上,1e610^6 是 1000000 或更好地称为 100 万的科学记数法。但正如 David 已经提到的,这实际上double在 C 中被视为 a ,其值实际上是1000000.0

但我觉得这些答案只关注您提供的特定代码片段,而不是整个代码,因此我想为您提供一些额外的上下文,因为您正在尝试弄清楚代码在做什么。

对于这些行:

time_t currentTime;
time(&currentTime);
Run Code Online (Sandbox Code Playgroud)

time获取一个指针time_t并对其进行操作,大概会向其写入一些类似的时间。

下一行实际上是非法的,因为currentTime已经声明了,所以让我们做一个小修改:

uint64_t convertedTime = (uint64_t)currentTime * 1e6;
Run Code Online (Sandbox Code Playgroud)

该行转换time_t currentTime为无符号 64 位整数,然后将其乘以1e61000000.0。这可能是为了单位转换而完成的。例如,假设以微秒( 、 10^-6 或) 为单位time写入时间,因此将其乘以秒数。我这么说只是因为这里似乎是单位转换,而不是因为我实际上知道做了什么(即我在这里按面值获取代码)。1e-6.000001currentTime1e6time


Dav*_*son 5

在 C 中,1e6有类型double,其值为 1 乘以 10 的 6 次方。它相当于1000000.0.

1e6不要被其他答案所迷惑:与 C 中的含义不同因为具有类型,而将具有某种整数类型。浮点类型(如整数类型)之间的行为存在很大差异。10000001e6double1000000double

编写数字的语法在C11 规范(以及早期版本)1e6的“浮动常量”部分中定义。这有点像科学计数法


Mik*_*ren 1

它是1e6

科学记数法Math.pow(10, 6) == 1000000

/* 是的,您可以使用几乎任何标准编程语言来做到这一点,包括 C */