int s = 1e9;
タイプとは何ですか、1e9
それはどのくらい正確ですか?(1000000000と正確に等しいですか?)
stdout
可能であれば、値/変数のタイプを出力すると便利です。
int s = 1e9;
タイプとは何ですか、1e9
それはどのくらい正確ですか?(1000000000と正確に等しいですか?)
stdout
可能であれば、値/変数のタイプを出力すると便利です。
1e9
double
IEEE浮動小数点表現で正確に表現されているです。C ++標準では、IEEE浮動小数点は必須ではありません。
s
はであるint
ため、double
値は自動的にに変換されますint
。これがどのように行われるかは、ある程度実装次第です。最近のほとんどのマシンでは、この変換手段s
には初期値1000000000が与えられます。
その価値については、次の1e9
タイプのコードを記述できます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のように)、精度には限界があります。
精度は表記法の特性ではないことに注意してください。とにかく、表記法は正確さそのものです。