1

我想创建一个具有三个值 1/6、2/3 和 1/6 的向量。显然,我的 Matlab 必须将这些有理数转换为实数,但我希望它能最大限度地提高可用精度。

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

b =

    0.1667    0.6667    0.1667

这是精度的巨大损失。double 不应该意味着数字的小数部分的 52 位精度,为什么数字会被如此严重地截断?

4

2 回答 2

7

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

长格式

将它们显示为:

0.166666666666667 0.666666666666667 0.166666666666667

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

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

于 2012-11-10T17:10:38.393 回答
0

您不能将值作为 1/2 或 1/4 或 1/6 存储到 Double 变量中……这些值在系统后面存储为小数;如果要存储这些值,请尝试将其存储为可行的字符串;

每当您想使用这些字符串进行数学计算时,请将值转换为数字并继续....

于 2012-11-10T17:13:25.933 回答