8
int s = 1e9;

タイプとは何ですか、1e9それはどのくらい正確ですか?(1000000000と正確に等しいですか?)

stdout可能であれば、値/変数のタイプを出力すると便利です。

4

3 に答える 3

10

1e9doubleIEEE浮動小数点表現で正確に表現されているです。C ++標準では、IEEE浮動小数点は必須ではありません。

sはであるintため、double値は自動的にに変換されますint。これがどのように行われるかは、ある程度実装次第です。最近のほとんどのマシンでは、この変換手段sには初期値1000000000が与えられます。

于 2011-11-28T14:10:00.857 に答える
5

その価値については、次の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;
}

もちろん、それがどのタイプであるかわからない場合は、考えられるすべてのタイプにオーバーロードを提供するのはかなり手間がかかりますが、それでも原則は同じです。

于 2011-11-28T15:00:36.937 に答える
2

これをに変更するfloatdouble、かなり正確になりますが、すべての計算が正確になるとは限りません(Kerrek SBのように)、精度には限界があります。

精度は表記法の特性ではないことに注意してください。とにかく、表記法は正確さそのものです。

于 2011-11-28T14:08:45.170 に答える