保存和比较MATLAB的舍入数字

时间:2014-09-23 22:33:58

标签: matlab scientific-notation

所以我创建了一个试图将十进制数与科学记数法进行比较的函数。我试图将它们四舍五入并将它们保存到新的变量中。

我做的是这个...

>> digits(3);

>> Y = vpa(0.000036856864)

    Y =

    3.69e-5

>> Z = vpa(0.000036857009)

    Z =

    3.69e-5

>> eq(Y,Z)

    ans =

     0

从技术上讲,新的舍入小数被保存到Y和Z,所以当我比较两个变量时,它给出0,但它应该是1.我如何解决这个问题以确保答案等于1?< / p>

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

vpa返回的值不是实际数字 - 它们是仍然包含数字原始值的符号对象(在舍入之前)。要比较两者,你应该将它们转换回双倍:

Y = double(vpa(0.000036856864))
Z = double(vpa(0.000036857009))
eq(Y,Z)

应返回1