C++有效數字
回答
那麼有good math libraries in math.h
而且存儲花車您的數字,雙打或雙打長將允許進行更精確的操作。
浮游物提供7位有效數字,而雙打提供16位有效數字。
而且打印出一般人使用_snprintf或printf和你可以格式化的雙打,當浮到你想要像精度:
float精度
的printf(「價值%8.2f「,floatVariable);
這是說你需要8個字符的總 領域,8個 字符內的最後2將舉行 小數部分。 (buffer,sizeof(buffer),「Value%.2f」,floatVariable);}}
上面的例子 請求最小字段寬度和 最後兩個字符是保存 的小數部分。
這些是「小數點後的數字」,而不是[有效數字](https://en.wikipedia.org/wiki/Significant_figures)。對於科學家和工程師來說,兩者之間存在着非常重要的差異。 – bdesham 2015-06-17 13:59:12
這應該得到你所需要的:
std::cout.precision(x); // x would be the number of significant figures to output
我會寫:cout.precision(2)< <5.34343;如果我想顯示5.3? – joshim5 2011-01-05 18:03:06
正確 - 這裏有它的文檔:http://www.cplusplus.com/reference/iostream/ios_base/precision/ – 2011-01-05 18:05:03
因爲顯著數字是十進制的概念和計算機說話的二進制這是很難的。你可以使用十進制數類(我不知道任何),或使用boost::interval,這是你最想達到的。
+1用於提示區間算術,儘管它可能在這裏過度殺傷,它仍然是值得了解的東西:) – 2011-01-05 21:21:35
這可能不是最有效的方法,但可以創建自定義數據類型。
class SigFigFloat
{
SigFigFloat(vector<short> digits, int decimalIndex, bool negative);
SigFigFloat operator+(const SigFigFloat &value);
SigFigFloat operator-(const SigFigFloat &value);
//etc...
}
它可以是一個大量的工作,但如果你實現這個權利,它可以代表一個非常靈活的方式,做與SIG的無花果計算。
如果我這樣做,我不會追蹤有意義的數字,我會追蹤誤差範圍,而不僅僅是有效數字的數量。這將允許我使用123±0.2或123±0.7等數字,而有效數字只允許123±0.5這樣的數字 – Steve 2017-01-13 20:42:04
這取決於你如何顯示它們。如果您使用的是printf-family,則可以設置精度(sprintf(buffer, "%.2f", myfloat)
)。如果您使用的是ostreams,則可以調用精度函數來設置小數位數。如果您正在尋找更加科學的方法,您必須編寫一個自定義函數,根據浮點數的當前值確定精度。
這裏是一個快速的C++ 11的解決方案,爲我工作:
int sig_figs = 3;
double number = 1562.654478;
std::cout << "original number:" << number << std::endl;
number = ([number](int number_of_sig_figs)->double{
std::stringstream lStream;
lStream << std::setprecision(number_of_sig_figs) << number;
return std::stod(lStream.str());
})(sig_figs);
std::cout << "rounded number:" << number << std::endl;
- 1. C中有效的小字節數組#
- 2. 確定C字符串是否爲C中的有效整數
- 3. 返回「有效」數字
- 4. 有效UTF-8字符串在C
- 5. 限制用戶輸入僅限於2位小數的有效數字C/C++
- 6. Swift - 有效數字到字符轉換
- 7. CSS中有多少個有效數字?
- 8. MFC Visual C++代碼來檢查有效的數字條目
- 9. 確定字符串是否有效整數Objective C IOS
- 10. C數組中最低有效字節的位置
- 11. C#將字符更有效地寫入2維數組
- 12. C字符數組指針不是一個有效的語句
- 13. 從oracle數據庫的字段中提取有效IP C
- 14. 不同效率的數字數字計數與蟒蛇&C
- 15. 有效字符
- 16. 有沒有辦法獲得小數的「有效數字」?
- 17. 無效函數(C++)
- 18. JQ 「無效的數字文字」 錯誤與有效的JSON數據
- 19. C#上的文字效果#
- 20. RDF有效字符
- 21. JSON有效字符
- 22. 舍入到下一個有效數字
- 23. 尋找有效數字的距離
- 24. 通過格式化宏有效字數
- 25. 更改R中adonis的有效數字?
- 26. Haskell中有效的數字讀取
- 27. NumberFormatException的上一個有效的數字
- 28. C#大寫首字母的字符串 - 更有效的方法?
- 29. C++ - 如何提取字符串中的有效字符串?
- 30. ASP.NET MVC/C# - 有效URL字符的字符串?
5,5.0 5.00000000是在計算機的表示相同。你在說如何*顯示2位有效數字的結果嗎? – kennytm 2011-01-05 18:00:02
是的,我是。我會編輯我的帖子來說。 – joshim5 2011-01-05 18:01:12
我認爲他的意思是在3.5 * 1.00 * pi的情況下,他希望使用3.5 * 1.0 * 3.1來計算(除非我感到困惑) – 2011-01-05 18:02:13