我的代码存在以下问题。我一直在尝试使用我在网上找到的其他帖子,例如this one。但他们没有找到我想要的东西。
我的代码使用MATLAB Exchange函数,该函数优化了一个重要的数字值,在点之后有32位数,例如
0.59329669191989231613604260928696
可以找到优化功能here,并将其称为fminsearchbnd
优化函数计算它并将值存储在我在代码中使用的变量中。为了不在每次我想要存储变量时执行优化(我尝试在* .mat和字符串形式的标签上。
但是当我检索它时,MATLAB将它转换为双精度变量'cut'在14之后的所有数字。但是我需要所有这些因为它们很重要!
是否可以使用vpa()
读取类似数字的数字,因为具有符号值我无法做任何事情。
非常感谢任何帮助。 感谢
编辑:
fminsearchbnd
给了我class(bb)
- > double
当我想在工作区看到它时0.586675392365899
。但是当我设置formatSpec = '%.32f\n';
因为我想查看优化给我的所有数字时,请输入set(editLabel,'String',num2str(bb,formatSpec))
答案 0 :(得分:2)
您正在尝试存储/使用无法在IEEE754 64-bit double-precision floating point number中准确表示的数字。
我不确定你是如何在不使用vpa()
的情况下得到这个数字的,因为64位double
是Matlab的最大精度......
您可以使用Ben Barrowes的multiple precision toolbox,也可以使用来自FEX的John d'Errico的HPF。如果要将文件存储/加载到文件中,则必须将/构造转换为/从字符串构建。
但我必须同意约翰在那里的评论:
事实上,大部分时间,如果你不能用双倍,你 做错了什么
所以... 为什么确实是那些32位或更多位数重要?