指定分数时的Matlab精度

son*_*oom 1 matlab

我想创建一个具有三个值1/6,2/3和1/6的向量.显然我Matlab必须将这些有理数转换成实数,但我预计它会最大化可用的精度.

它将值存储为双精度值,但它将它们存储为 -

b =

    0.1667    0.6667    0.1667
Run Code Online (Sandbox Code Playgroud)

这是一个巨大的精度损失.对于数字的小数部分,不应该意味着52位精度,为什么数字被截断得如此严重?

Nik*_* C. 7

数字仅以这种方式显示.在内部,他们使用完全精确.您可以使用该format命令更改显示精度.例如:

format long

将它们显示为:

0.166666666666667    0.666666666666667    0.166666666666667

所以答案很简单; 没有精度损失.这只是一个显示问题.

您可以阅读有关可用于显示数字的其他格式的文档.