1
我試圖做一個物理問題,需要存儲一個值大約5 * 10 -11; 嘗試浮動後,長雙和其他幾個人都沒有看到足夠長的時間。有沒有可以讓我這樣做的數據類型? 感謝在C中存儲一個長十進制數
long double I = 0;
I = 0.01902*pow(0.00318,3)/12;
printf("%Lf\n",I);
輸出爲0.000000
我試圖做一個物理問題,需要存儲一個值大約5 * 10 -11; 嘗試浮動後,長雙和其他幾個人都沒有看到足夠長的時間。有沒有可以讓我這樣做的數據類型? 感謝在C中存儲一個長十進制數
long double I = 0;
I = 0.01902*pow(0.00318,3)/12;
printf("%Lf\n",I);
輸出爲0.000000
long double I = 0;
I = 0.01902*pow(0.00318,3)/12;
此時,I
的價值大約是5.096953e-11
。然後......
printf("%Lf\n", I);
在此printf()
調用的唯一格式說明是%Lf
。這表明參數是long double
(L
),並且應該將其打印爲浮點數(f
)。最後,由於精確度(在期間後打印的位數)沒有明確給出,因此假定爲6
。這意味着在這段時間後最多可打印6位數字。
有幾種方法可以解決這個問題。其中兩個將是...
printf(".15Lf\n", I);
這將設置精度爲15
。因此,該期限後將打印15位數字。並且...
printf("%Le\n", I);
這將以科學計數法打印數字,即5.096953e-11
。它也可以配置爲打印更多的數字,如果你想要它們。
查看*任意精確數字*,例如在[這個線程](http://stackoverflow.com/questions/1218149/arbitrary-precision-arithmetic-explanation)或[GNU MP](https://gmplib.org/)。 – Jens
究竟是什麼讓你斷定'float'或'double double'不夠「夠長」? –
IIRC,該值應該在IEEE754單精度浮點數中正確編碼。 – 3442