如果我使用值进行单个精度操作,它将给出以8结尾的结果:
>> single(single(6.500001e+02)*single(-64.1775131)*single(0.65)*single(2))
ans = -5.4230008e+004
然后我使用双精度进行任何操作,并且操作与之前相同,使用单精度,结果将与我第一次运行时不同:
>> double(6.5000012e+02)*double(-64.1775131)*double(0.65)*double(2)
ans = -5.423000858119204e+004
>> single(single(6.500001e+02)*single(-64.1775131)*single(0.65)*single(2))
ans = -5.4230004e+004
这个问题发生在Matlab 2008a 32位。这在Matlab 2012b 64位中不是问题。
有关如何避免此问题的任何想法?
谢谢。
答案 0 :(得分:2)
我无法测试,但是,从我在MATLAB Central上找到的内容来看,它似乎是全球工作区@versions R2008 *中的一个错误。所以,为了避免这个问题: