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)
    浮点数不能直接用等号比较。因为浮点数存在误差。

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大