当前位置: 首页 > 知识库问答 >
问题:

复数的大小

那昊
2023-03-14

我正在做一个关于复数的项目,来解释更多(a+bi),其中“a”是复数的实部,“b”是它的虚部。(a和b是实数但“i”不是)

我很难实现一个大小方法,而不是返回一个实数,作为一个双倍,我得到无穷大。

这就是我正在尝试实现的内容:(a+bi)=√(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会返回无穷大而不是1.8961503816218352 E154?

共有1个答案

滕无尘
2023-03-14

无穷大数是大于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之前,双max值的平方会导致无穷大。你找不到无穷大数的sqrt,所以你得到的是完全有效的。

 类似资料:
  • 尝试处理大小数。当尝试将大小数除以3时,收到一个算术异常,例如10(结果是一个周期值)。 如果我使用指定位数的四舍五入:如果是10/3,我将收到正确的结果3.3333333,但如果是10/8,我将收到1.25000000。我希望在第一种情况下收到3.33333333和1.25。 有一个普遍的解决方案吗? 我的代码是:

  • 我有一个结构与一些固定大小的数组: 我从一个文件中读取字节到一个固定大小的数组中,并将这些字节逐位复制到结构中。 最后一行()不起作用,因为在结构中它是一个,而是一个切片。我是否可以返回将一个片转换为一个固定大小的数组,就像在一个范围内那样,而不是像我所做的那样说?

  • 相关:切片到固定大小的数组,但是我正在寻找更具体的形式。 理想情况下,我希望构建一个具有以下签名的函数: 因为这还不可能(因为非类型参数不是一件事),所以我不想让函数直接接受数组: 用代替。 以下是我迄今为止最有希望的尝试: 然而,我错过了允许数组强制切片的特性(提示:这不是)。 只要我同意函数只适用于小数组,有没有办法使用安全代码构建这样的函数?

  • 我对Java非常陌生,所以如果我做了一些非常错误的事情,请原谅我。 我在一个项目中工作,我需要快速扫描大量的数据(CSV有5000万行或更多,每行5个条目)重复。我使用了,因为它的方法速度很快。

  • 我们使用Grafana Prometheus来监控我们的架构体系,最近我们添加了一些以业务为中心的指标,我们跟踪的一个计数器出现了问题。这是一个会话时间计数器。基本上,每次会话结束时,我们都会根据用户在该会话中花费的时间增加计数器。因此,如果用户花费2m使用该软件,计数器将增加120000毫秒。几天来,这种方法运行得非常好,但是从昨天开始,当我们在一个实例计数器和其他实例计数器之间有一个很大的差异

  • 有谁可以指导我在正确的方向上如何创建一个数组的这些员工?数组设置为常数size=10;下面是我的employee类和我尝试的数组的驱动程序。此外,我知道大部分输出都是空的(员工姓名、id等),因为我已经知道如何编写它,但到目前为止还没有。此外,类名“Employee 1”中的“1”之所以存在,是因为我已经在Employee下保存了另一个文件。你很可能知道,对Java很陌生。谢谢 我的驱动程序类: