1

我的代码有以下问题。我一直在尝试使用我在网上找到的其他一些帖子,比如这个。但他们没有我要找的东西。

我的代码使用了一个 MATLAB Exchange 函数,该函数优化了一个数值,该数值对于点后的 32 位很重要,例如

0.59329669191989231613604260928696

优化函数可以在这里找到,它被称为fminsearchbnd 优化函数计算这个并将值存储在我在整个代码中使用的变量中。为了不每次我想存储变量时都执行优化(我尝试在 *.mat 和字符串形式的标签上。但是当我检索它时,MATLAB 将其转换为双精度变量“切割”所有14号之后的数字。但是我需要它们,因为它们很重要!

是否可以在不使用的情况下读取这样的数字,vpa()因为使用符号值我无能为力。

非常感谢任何帮助。谢谢

编辑: fminsearchbnd给我这个class(bb)->double当我想在工作区看到它时,它是0.586675392365899. 但是当我设置formatSpec = '%.32f\n';因为我想查看优化给我的所有数字时,输入set(editLabel,'String',num2str(bb,formatSpec))

4

1 回答 1

2

您正在尝试存储/使用无法在IEEE754 64 位双精度浮点数中精确表示的数字

我不确定你是如何得到这个数字而不vpa()首先使用的,因为 64 位double是 Matlab 的最大精度......

您可以使用来自 FEX的 Ben Barrowes的多精度工具箱,或 John d'Errico 的HPF。如果要将字符串存储/加载到/从文件中,则必须转换/构造到/从字符串。

但我必须同意约翰在那里的评论:

事实是,大多数情况下,如果你不能用双打来做到这一点,那你就做错了

那么...为什么这些 32 位或更多位数字究竟很重要?

于 2013-06-05T07:40:00.973 回答