2017-03-07 15 views
3

申し訳ありませんが、私は非常に基本的な質問があります。C++で精度を100桁に設定するにはどうすればよいですか?

これは非常に簡単な計算で、整数(22)を別の整数(7)で割ったものです。私は、コード内の実際の計算と出力値の両方で、C++コードが正確に100桁の精度を使用したいと思います。メープル・プログラムを使用して、私は

restart; 
Digits:=100; 
evalf(22/7); 

を取得し、私が得る答えは、

3.142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857143 

あるしかし、私は次のC++コードを使用して、何か別の答えを得ます。これは、実際の数字の数が少なくてもゼロを追加するだけです。これは完全に間違っています。以下は私のC++コードです。メープル・プログラムを使用して

#include <iostream> 
using namespace std; 
int main() 
{ 
    cout << fixed; 
    cout.precision(100); 
    cout << "22/7 = " << 22/(double)(7) << endl; 
    return 0; 
} 
+14

C++は倍精度浮動小数点数(〜14桁)を正確に保持します。これは、表示精度ではありません。 –

+5

任意の精度ライブラリを検索してみてください。 –

+1

[浮動小数点の不正確な例]の重複の可能性があります(http://stackoverflow.com/questions/2100490/floating-point-inaccuracy-examples) – dandan78

答えて

6

、私は

メープルは、その横に、他の特別なツールです取得:任意精度で

シンボリックと数値計算のため

サポート

別の側面では、C++は一般的な目的のpプログラミング言語。言語としては、精度が限られている浮動小数点演算をサポートしています。あなたはそこで任意の精度を投げて、Mapleと同じ結果を期待することはできません。したがって、任意の高精度ライブラリ(標準C++の一部ではありません)を使用するか、設計によってサポートする別の言語に切り替える必要があります。

関連する問題