Java中的正无穷,负无穷和非数

正无穷(POSITIVE_INFINITY)负无穷(NEGATIVE_INFINITY)和非数(NaN)是java中三个特殊的浮点值,经常被用来表示异常


因为有两种浮点类型,所以具体的代码表示分别为:

Float型:Float.POSITIVE_INFINITY Float.NEGATIVE_INFINITY Float.NaN

Double型:Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY Double.NaN

它们之间有如下关系:

1.相同的无穷大之间是相等的,即负无穷和负无穷相等,正无穷和正无穷相等

2.非数和非数是不等的

其得到方式分别为:

1.    0.0/0.0或对负数开方得到非数

2. 只有浮点数除以0才能得到正无穷或负无穷(因为java语言的类型自动转换,执行这个算数表达式时,0会自动转换为浮点类型即0.0)

同理,若分母上是整型数值,分子上是浮点数0.0,也可得到正无穷或负无穷。但分子分母都是整数时,就会出现异常。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 求 $5$ 到无穷大的定积分可以通过换元法转化为求 $0$ 到无穷大的积分。具体来说,设 $x = \frac{1}{t}$,则当 $t \rightarrow 0^+$ 时,$x \rightarrow \infty$。因此, $$ \int_5^{-\infty} f(x) dx = \int_0^{+\infty} \frac{f(1/t)}{t^2} dt $$ 接下来,我们可以使用数值积分的方法来求解上式右边的积分。以下是一个使用梯形法计算积分的 Java 代码示例: ```java import java.util.function.DoubleFunction; public class InfiniteIntegral { public static double integrate(DoubleFunction<Double> f, double a, double b, int n) { double h = (b - a) / n; double sum = 0.5 * (f.apply(a) + f.apply(b)); for (int i = 1; i < n; i++) { double x = a + i * h; sum += f.apply(x); } return h * sum; } public static void main(String[] args) { DoubleFunction<Double> f = x -> Math.exp(-x) / x; // 被积函数 double a = 0.0; // 积分下限 double b = 100.0; // 积分上限,取一个足够大的数 int n = 1000000; // 分割数,取一个足够大的数 double result = integrate(f, a, b, n); System.out.println(result); } } ``` 在这个例子,我们使用了 Java 8 的 `DoubleFunction` 接口来表示被积函数。`integrate` 方法使用梯形法来计算函数积分,其 `n` 表示分割数,`h` 表示每个梯形的底边长,`sum` 表示梯形面积之和。在 `main` 方法,我们定义了被积函数 `f`,并将其传递给 `integrate` 方法来计算积分结果。最后,我们将结果打印到控制台上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值