只是在matlab中遇到了一些可变精度问题..
我有代码:
x = 0.1;
syms y;
S = solve(x+1==(1+y)/(1-y),y);
y = double(S);
val = abs(((2^2)*(y^2))/(2*(y-1)^2))
但 val 总是四舍五入。我应该得到,val = 0.0049999
但我得到了val = 0.0050
。
有人知道为什么吗?
谢谢。
编辑:添加额外的代码
x = 0.1;
syms y;
S = solve(x+1==(1+y)/(1-y),y);
y = double(S);
val = abs(((2^2)*(y^2))/(2*(y-1)^2))
sprintf('%22.20f',val)
for i=1:2
val= val+((2^i)*(y^i))/(i*(y-1)^i);
sprintf('%22.20f',val)
end
第一个 sprintf 工作并显示正确的舍入,但第二个没有!