2017-03-07 128 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++的一部分),或者切換到支持設計的其他語言。