在我的项目中,我必须在double元素矩阵上计算除法,乘法,减法和加法.问题是,当矩阵的大小增加时,我的输出的准确性会受到严重影响.目前我正在使用double我认为使用8 bytes内存的每个元素并且具有16 digits与小数位无关的精度.即使对于大尺寸的矩阵,所有元素占用的存储器也在几千字节的范围内.所以我可以负担得起datatypes需要更多内存的东西.所以我想知道哪种数据类型更精确double.我尝试在一些书中搜索,我可以找到long double.但我不知道它的精确度是多少.如果我想要比这更精确怎么办?
您可能需要考虑操作顺序,即首先从最小值开始按有序顺序进行加法。这将使用尾数中的相同精度提高结果的整体准确性:
1e00 + 1e-16 + ... + 1e-16 (1e16 times) = 1e00
1e-16 + ... + 1e-16 (1e16 times) + 1e00 = 2e00
Run Code Online (Sandbox Code Playgroud)
关键是将小数添加到大数会使它们消失。所以后一种方法减少了数值误差
| 归档时间: |
|
| 查看次数: |
19216 次 |
| 最近记录: |