gpt4 book ai didi

java - 复数的大小

转载 作者:行者123 更新时间:2023-11-30 09:12:43 24 4
gpt4 key购买 nike

我正在从事一个处理复数的项目,以解释更多(a + bi),其中“a”是复数的实部"b"是它的虚部。 (a 和 b 是实数,但“i”不是)

我很难实现一个magnitude 方法,而不是返回一个实数作为 double 我得到 infinity .

这就是我要实现的:| (一+双) | = √(a^2 + b^2)

我的代码片段

public double mag(){
/**
* Compute the magnitude of this complex number.
*
*/
//final double re is the real part
//final double I'm is the imaginary part
double mag = Math.sqrt(Math.pow(this.re, 2) + Math.pow(this.im, 2));

return mag;
}

比如说,如果实数和虚数都是 Double.MAX_VALUE。为什么 mag 会返回 infinity 而不是 1.8961503816218352E154 ?

最佳答案

无穷大数字是大于 Double.MAX_VALUE 或小于 -Double.MAX_VALUE 的数字。 1.0/0.0 是无限的。 2*Double.MAX_VALUE 也是如此。

Math.pow(Double.MAX_VALUE,2)明显大于Double.MAX_VALUE。最大可能数的平方将导致常规数字系统无法表示的结果。

Math.sqrt(Math.pow(this.re, 2) + Math.pow(this.im, 2))
==> Math.sqrt(Math.pow(Double.MAX_VALUE, 2) + Math.pow(Double.MAX_VALUE, 2))
==> Math.sqrt(Infinity + Infinity)
==> Infinity

在可以计算 sqrt 之前,双最大值的平方结果为无穷大。你找不到无穷大数的平方根,所以你得到的是完全有效的。

关于java - 复数的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21379450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com