【发布时间】:2013-03-28 23:20:18
【问题描述】:
在我的项目中,我必须在 double 元素的矩阵上计算除法、乘法、减法和加法。
问题是当矩阵的大小增加时,我的输出的准确性会受到极大的影响。
目前,我对每个元素使用double,我认为这些元素使用内存的8 bytes,并且无论小数位如何,其精度都为16 digits。
即使对于大尺寸的矩阵,所有元素占用的内存也在几千字节的范围内。所以我可以负担得起使用需要更多内存的datatypes。
所以我想知道哪种数据类型比double 更精确。
我尝试在一些书籍中搜索,我可以找到long double。
但我不知道它的精度是多少。
如果我想要比这更高的精度怎么办?
【问题讨论】:
-
查看 GMP 项目。还有一些方法可以最大限度地减少计算中的舍入误差。
-
如果你可以依赖外部依赖,Boost 1.53 有一个多精度库可以帮助你!!
-
使用一点代数重新排列数学计算有助于减少舍入误差
-
切换到更大的类型只会延迟数字崩溃。为了完全避免它,请翻开一本数值分析书,阅读“稳定性”一章。
-
数值崩溃是您遇到的现象:舍入错误累积并导致错误答案。