保存和比较 MATLAB 的舍入数字

Posted

技术标签:

【中文标题】保存和比较 MATLAB 的舍入数字【英文标题】:Saving and comparing rounded numbers for MATLAB 【发布时间】:2014-09-23 22:33:58 【问题描述】:

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

我做的是这个……

>> 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?

感谢任何帮助!

【问题讨论】:

【参考方案1】:

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

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

应该返回 1

【讨论】:

以上是关于保存和比较 MATLAB 的舍入数字的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UISlider 以指数方式输出漂亮的舍入数字?

java中的舍入双[重复]

准确预测任意浮点格式之间转换的舍入误差

BigDecimal提供了8种舍入方式

std::cbrt 的舍入错误?

在 C++ 中使用 floor 函数的舍入错误