2009-04-27 6 views
0

ほとんどの場合、本当に簡単な質問は、私はこれではまだかなり新しいよ理解しやすい任意の答えを保管してください。小数点以下の桁およびC++での捕虜機能

私は小さなアプリケーションを作ってるんだ、と私は使用する必要がありますいくつかの計算のための力。少しの研究の後、私はcmathでpow関数を見つけ、遊びを持っていました。

#include <iostream> 
#include <cmath> 
using namespace std; 

int main() 
{ 
    float dummy2, test(6.65); 
    dummy2 = (float) pow((float) 3.57, test); 
    cout << dummy2; 

    return 0; 
} 

をして、それは2つのだけ小数点以下に、正しい答え(4734.17)を返します:最後に、私が働くこのスニップ、思い付きました。私は小数点以下5桁が好きです。

私はここで何が間違っていましたか?間違ったデータ型(浮動小数点数)を使用していますか?または、pow関数の中で2dpだけを使うことの限界ですか?

もし私が望む値を持つ定数を定義すると、この精度が必要なのは4または5の合計にすぎないので、プログラムを計算することは可能です素晴らしいよ

ありがとうございました

+0

Googleはあなたの友達です。 [これらの結果](http://www.google.com/search?q=cout+decimal+places)と[これも同様](http://www.google.com/search?q=cout+float+精度)はあなたが望むもの、つまり、coutパラメータとしてsetprecision()を使う必要があります。 –

答えて

3

精度を向上させるには、doubleを使用する必要があります。 Doublesは浮動小数点数に対して7桁に対して15桁の精度を持ちます。

+0

15桁と7桁の数字は大まかな値です。特に、浮動小数点数は少し楽観的かもしれません... – dmckee

6

私はfbinderが言うように、より正確にDoublesを使用します。 問題を解決するには、CスタイルとC++スタイルの2つのオプションがあります。

C-スタイル

#include <cstdio> 
printf("%.5f", dummy2); 

C++スタイル

#include <iomanip> 
std::cout << setprecision(5) << dummy2 << std::endl; 

OR

std::cout.precision(5); 
std::cout << dummy2 << std::endl; 
// continue to use cout to output 5 decimal places 
関連する問題