最近在用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的取值范围,完全没觉得有这个必要。另外实际跑了一下,两者的结果都是一样的。
c#中一个复数求模程序的异常处理的疑问
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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系统的像差计算