blackyzero 2016-01-01 07:49 采纳率: 0%
浏览 1425

c#中一个复数求模程序的异常处理的疑问

最近在用c#写一个复数类,其中要用到一个复数求模的运算。在网上找到了一些示例代码,但是不知道为什么要这么写。我自己的代码和示例代码都贴出来:
public double Abs2()
{
double result = Math.Sqrt(this.real * this.real + this.imag * this.imag);
return result;
}
public double Abs()
{
double x = Math.Abs(this.real);
double y = Math.Abs(this.imag);
if (this.real == 0)
{
return y;
}
if (this.imag == 0)
{
return x;
}
if (x > y)
{
return x * Math.Sqrt(1 + (y / x) * (y / x));
}
else
{
return y * Math.Sqrt(1 + (x / y) * (x / y));
}
}
其中的abs2是我自己写的。abs是网上找的。问一个朋友,他说是异常处理,怕越界。但是看了下double的取值范围,完全没觉得有这个必要。另外实际跑了一下,两者的结果都是一样的。

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-01-01 07:55
    关注

    Abs那样的写法也有问题
    if (this.real == 0)
    浮点数不能直接用等号比较。因为浮点数存在误差。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算