科学记数法的类型

scientific notation's type

本文关键字:类型      更新时间:2023-10-16
int s = 1e9;

1e9的类型是什么,它有多精确?(等于1000000000吗?)

如果可能的话,将值/变量的类型打印为stdout将是有用的。

1e9是在IEEE浮点表示中具有精确表示的double。c++标准不强制IEEE浮点。

sint,因此double的值将自动转换为int。这在某种程度上取决于执行情况。在现在的大多数机器上,这种转换意味着s将被赋予1000000000的初始值。

无论如何,您可以编写代码来显示1e9的类型为double:

#include <iostream>
void show_type(double value) { 
    std::cout << "type = doublen"; 
}
void show_type(...) {
    std::cout << "Type != doublen";
}
int main() { 
    show_type(1e9);
    return 0;
}

当然,如果你不知道它的类型是什么,为每一种可能的类型提供重载是相当多的工作,但原理是一样的。

如果您将其更改为floatdouble,它将非常精确,但不是每个计算都将是精确的(感谢Kerrek SB),精度是有限制的。

注意,精度是而不是符号的属性,无论如何,符号是精度本身