“ 1e”是什么意思?

时间:2019-04-18 23:38:56

标签: c

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

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

4 个答案:

答案 0 :(得分:4)

即1e6,而不是le6,它表示1 * 10 ^ 6或1000000.0

这是科学计数法。

答案 1 :(得分:4)

在C中,1e6的类型为double,其值是10的1乘以6的幂。它等效于1000000.0

不要被其他答案所迷惑:1e6与C中的1000000的含义相同吗,因为1e6的类型为{{1 }},而double将具有某种整数类型。像1000000这样的浮点类型和整数类型之间在行为上有很大差异。

C11 specification(以及更早的版本)的“浮动常量”部分中定义了写数字double的语法。有点像scientific notation

答案 2 :(得分:2)

  

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

正如其他人所提到的,实际上1e6是10 ^ 6的科学计数法,即1000000或更好地称为100万。但是正如David所提到的,在C语言中它实际上被视为double,其值实际上是1000000.0

但是我觉得这些答案仅集中在您提供的特定代码段上,而不是整个代码段上,因此我想为您提供一些额外的上下文,因为您正在尝试确定代码的内容。代码正在执行。

对于这些行:

time_t currentTime;
time(&currentTime);

time获取一个指针time_t并对其进行操作,大概为此花费了一些时间。

由于实际上已经声明了currentTime,所以下一行实际上是非法的,因此让我们进行一些小的修改:

uint64_t convertedTime = (uint64_t)currentTime * 1e6;

此行将time_t currentTime转换为无符号64位整数,然后将其乘以1e61000000.0。对于单位转换,可能会这样做。例如,假设time以微秒(1e-6,10 ^ -6或.000001的时间写成currentTime,因此将其乘以1e6给你几秒钟。我说这仅仅是因为这里似乎是单位转换,而不是因为我实际上知道 time所做的事情(即,我在这里以面值获取代码)。

答案 3 :(得分:1)

它是1e6

Math.pow(10, 6) == 1000000的科学符号

/ *是的,您可以使用几乎任何任何标准编程语言(包括C * /

)来完成此操作