繁体   English   中英

八度-显示“真实”零

[英]Octave - show "real' zero

有时八度显示的数字非常接近零,而不是“实数”零。

例如:

>> sin(pi)
ans =   1.2246e-016

我了解这是由于浮点算术问题等引起的,但是很烦人...

有没有办法获得预期的0而不是一些几乎为零的值?

编辑

一个更真实的例子是:

>> cos(pi) + i*sin(pi)
ans = -1.0000e+000 + 1.2246e-016i

将一些舍入函数应用于结果无济于事,并且我不想在计算中插入舍入函数。

是否没有办法告诉Octave“不太精确”?

其他不那么复杂的工具(例如SpeedCrunch)可以“开箱即用”地进行操作:

cos(pi) + i*sin(pi)
= -1

定义有点含糊

非常接近零

但是,您可以使用舍入功能,将其舍入到最接近的整数

round(sin(pi))

当然,这对于sin函数将不起作用,因为所有返回值都在[-1 1]之间。

因此,您可以定义通用函数以截断小于指定范围的数字。

function retval = bound (num,boundval)

  if  (abs(num) < boundval)
    retval = 0;
  else
    retval = num;
  endif
endfunction

如果num参数在[-bound bound]范围内,则此函数将设置返回零。

您可以使用它作为例如

bound(myvar,0.001);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM