int s = 1e9;
什么是类型,1e9
它有多精确?(它是否正好等于 1000000000?)
如果可能的话,打印值/变量的类型stdout
会很有用。
int s = 1e9;
什么是类型,1e9
它有多精确?(它是否正好等于 1000000000?)
如果可能的话,打印值/变量的类型stdout
会很有用。
1e9
是double
在 IEEE 浮点表示中具有精确表示的 a。C++ 标准不强制要求 IEEE 浮点。
s
是一个int
,所以该double
值将自动转换为一个int
。这在某种程度上取决于实施。在当今的大多数机器上,这种转换方式s
将被赋予初始值 1000000000。
对于它的价值,您可以编写显示1e9
具有 type的代码double
:
#include <iostream>
void show_type(double value) {
std::cout << "type = double\n";
}
void show_type(...) {
std::cout << "Type != double\n";
}
int main() {
show_type(1e9);
return 0;
}
当然,如果你不知道它有什么类型,那么为每一种可能的类型提供一个重载是相当多的工作,但是原理是一样的。
如果您将其更改为float
或double
将非常精确,但并非所有使用它的计算都是精确的(感谢 Kerrek SB),那么精度就会受到限制。
请注意,精度不是notation的属性,无论如何,符号本身就是精确性。