在我的项目中,我必须计算double
元素矩阵的除法、乘法、减法、加法。问题是当矩阵的大小增加时,我的输出的准确性会受到极大的影响。目前我正在使用double
我认为使用内存的每个元素,并且无论小数点位置如何,8 bytes
它的准确性都是如此。16 digits
即使对于大尺寸的矩阵,所有元素占用的内存也在几千字节的范围内。所以我可以负担得起datatypes
需要更多内存的使用。所以我想知道哪种数据类型比double
. 我尝试在一些书籍中搜索并且我可以找到long double
。但我不知道它的精度是多少。如果我想要比这更精确怎么办?
问问题
28791 次
4 回答
7
您可能需要考虑操作的顺序,即首先从最小值开始按有序顺序进行加法。这将使用尾数中的相同精度提高结果的整体准确性:
1e00 + 1e-16 + ... + 1e-16 (1e16 times) = 1e00
1e-16 + ... + 1e-16 (1e16 times) + 1e00 = 2e00
关键是把小数加到大数上会使它们消失。所以后一种方法减少了数值误差
于 2013-03-27T15:10:22.670 回答
3
精度更高的浮点数据类型double
将取决于您的编译器和体系结构。
为了获得更多的double
精度,您可能需要依赖一些支持任意精度计算的数学库。不过,这些可能不会很快。
于 2013-03-27T13:16:58.907 回答
0
在 Intel 架构上,精度long double
为80 位。
你想代表什么样的价值观?也许你最好使用固定精度。
于 2013-03-27T13:21:38.723 回答