Help regarding "format long"
3 次查看(过去 30 天)
显示 更早的评论
i am trying to solve a=(4:0.0002:4.20) with format long, but i am getting weird values and not accurated ones like 4.196000000000001 4.196200000000000 4.196400000000001 4.196600000000000 4.196800000000001
But it should be like this 4.196000000000000 4.196200000000000 4.196400000000000 4.196600000000000 4.196800000000000
why matlab is not giving me accurate answer and adding 0.000000000000001 at alternative figures.
0 个评论
采纳的回答
Matt Tearle
2011-2-26
Welcome to the joy of round-off error. 0.0002 is not exactly representable in binary, hence adding these floating point numbers causes error at the level of machine precision. Enter eps(4) to see what machine precision is for these values.
0 个评论
更多回答(2 个)
James Tursa
2011-2-26
You may also find the num2strexact utility to be of some help in understanding this. e.g.,
>> num2strexact(4.196)
ans =
4.1959999999999997299937604111619293689727783203125
>> num2strexact(4.1962)
ans =
4.19620000000000015205614545266143977642059326171875
>>
You can find the num2strexact utility here:
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Manage Products 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!