提问人:user53534 提问时间:10/21/2014 更新时间:11/1/2014 访问量:128
减法时的 MATLAB 精度
MATLAB precision when substracting
问:
我需要高精度来完成我正在从事的项目。 我遇到的问题在减去时在这里得到了说明:
>> 1-0.9999999999999999
ans = 1.1102e-16
>> 1-0.99999999999999999
ans = 0
我知道这与双精度有关。无论如何,我可以获得更高的精度吗? 我检查了“vpa”功能,但我无法获得更高的精度。 有人可以帮我解决这个问题吗?
先谢谢你!
答:
0赞
aphid
11/1/2014
#1
Matlab 内部使用 64 位系统双精度计算其所有数字,这解释了精度问题。matlab 确实存在允许您使用任意精度算术的扩展。例如,请参阅此问题。
评论
vpa('1-0.9999999999999999')
vpa(1-0.9999999999999999)
0.9999999999999999
double
vpa
长双精度
不一定是可移植的,VC++ 映射到简单的:msdn.microsoft.com/en-us/library/9cx8xs15.aspx。虽然实际上,如果在 FPU(x87 的本机格式)上完成计算,则在 80 位寄存器中执行,但当传输到内存时,它们以 64 位存储。有一条指令会影响每次计算后中间结果是否减少到 64 位。long double
double
double