假设我想0.011124325465476454
在 MATLAB 中将数字转换为字符串。
如果我打
mat2str(0.011124325465476454,100)
我得到0.011124325465476453
了最后一位不同的数字。
如果我打num2str(0.011124325465476454,'%5.25f')
我明白了0.0111243254654764530000000
它用不需要的零填充,并且在最后一位不同(3 应该是 4)。
我需要一种方法将具有随机小数位数的数字转换为它们的精确字符串匹配(不填充零,不修改最终数字)。
有没有这样的方法?
编辑:由于我没有记住 Amro 和 nrz 提供的有关精度的信息,因此我添加了有关该问题的更多附加信息。我实际需要转换的数字来自将它们输出到 txt 文件的 C++ 程序,它们都是 C++double
类型。[注意:将数字从 txt 文件输入到 MATLAB 的部分不是由我编码的,实际上我不允许修改它以将数字保留为字符串而不将它们转换为数字。我只能访问此代码的“输出”,这是我要转换的数字]。到目前为止,我还没有得到超过 17 位小数的数字(注意:因此,上面提供的带有 18 位小数的示例并不是很有指示性)。
现在,如果号码有 15 位数字,例如 0.280783055069002
然后num2str(0.280783055069002,'%5.17f')
或mat2str(0.280783055069002,17)
返回
0.28078305506900197
这不是确切的数字(请参阅最后一位数字)。
但如果我打 mat2str(0.280783055069002,15)
我得到
0.280783055069002
哪个是对的!!!
可能有一百万种方法可以“围绕”问题进行“编码”(例如,创建一个进行转换的例程),但是当我输入一个随机数为小数(但不超过 17);