Java 我可以用什么来模拟无穷大?

Java 我可以用什么来模拟无穷大?,java,double,Java,Double,我想要一个可以模拟无穷大的双精度放大镜,但不要太大以至于占用很多内存。所以,最大的可能的加倍,可以在不破坏我的程序的情况下大量使用 对于上下文:我尝试创建一个函数,该函数返回由两个点创建的两条直线段之间的交点,如果没有交点,则返回null(在更高的方法中用于确定在我的plat-former游戏中对象是否碰撞)。作为数学/代码的一部分,我需要从两点创建一个直线函数,当该直线恰好垂直时,它需要有一个无限的斜率。以下是我到目前为止的情况: public static Point intersect(i

我想要一个可以模拟无穷大的双精度放大镜,但不要太大以至于占用很多内存。所以,最大的可能的加倍,可以在不破坏我的程序的情况下大量使用

对于上下文:我尝试创建一个函数,该函数返回由两个点创建的两条直线段之间的交点,如果没有交点,则返回null(在更高的方法中用于确定在我的plat-former游戏中对象是否碰撞)。作为数学/代码的一部分,我需要从两点创建一个直线函数,当该直线恰好垂直时,它需要有一个无限的斜率。以下是我到目前为止的情况:

public static Point intersect(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) {
    //calcs slopes
    double m1 = bigDouble; //infinity!
    if (x1==x2) m1 = (y2-y1) / (x2-x1); //if its not vertical, calc the slope
    double m2 = bigDouble;
    if (x3==x4) m2 = (y4-y3) / (x4-x3);
    //calcs b in y=mx+b
    int b1 = (int) (m1*x1+y1);
    int b2 = (int) (m2*x3+y3);
    //checks that lines are not parallel
    if (m1==m2) return null;
    //calcs intersection
    int x = (int) ((b2-b1)/(m1-m2));
    int y = (int) (m1*x+b1);
    //checks that intersection is within bounds of segments
    if (isOutside(x,x1,x2)||isOutside(y,y1,y2)||isOutside(x,x3,x4)||isOutside(y,y3,y4)) return null;
    //returns intersection point
    return new Point(x,y);
}

public static boolean isOutside (int num, int bound1, int bound2) {
    return num<getMin(bound1,bound2) || num>getMax(bound1, bound2);
}

public static int getMin(int num1, int num2) {
    if (num1>num2) return num2;
    return num1;
}

public static int getMax(int num1, int num2) {
    if (num1>num2) return num1;
    return num2;
}
公共静态点相交(intx1、inty1、intx2、inty2、intx3、inty3、intx4、inty4){
//计算坡度
double m1=bigDouble;//无穷大!
如果(x1==x2)m1=(y2-y1)/(x2-x1);//如果不是垂直的,则计算坡度
double m2=bigDouble;
若(x3==x4)m2=(y4-y3)/(x4-x3);
//计算y=mx+b中的b
int b1=(int)(m1*x1+y1);
int b2=(int)(m2*x3+y3);
//检查直线是否不平行
如果(m1==m2)返回null;
//计算交叉口
int x=(int)((b2-b1)/(m1-m2));
int y=(int)(m1*x+b1);
//检查交点是否在线段的边界内
如果(等外(x,x1,x2)|等外(y,y1,y2)|等外(x,x3,x4)|等外(y,y3,y4))返回空值;
//返回交点
返回新点(x,y);
}
公共静态布尔值isOutside(int num、int bound1、int bound2){
返回numgetMax(bound1,bound2);
}
公共静态int getMin(int num1,int num2){
如果(num1>num2)返回num2;
返回num1;
}
公共静态int getMax(int num1,int num2){
如果(num1>num2)返回num1;
返回num2;
}
那么我能用什么来做那个大双人床呢?谢谢

使用以下任一选项:

Double.POSITIVE_INFINITY
Double.MAX_VALUE
使用以下任一选项:

Double.POSITIVE_INFINITY
Double.MAX_VALUE

我的印象是你认为大双打需要更多的记忆。Java double被设计为实现为IEEE 754 64位二进制浮点,因此适合64位。哦,哇,这意味着我可以使用我想要的任何大小?那很简单,我可以把64位的最大值加出来!谢谢我的印象是你认为大双打需要更多的记忆。Java double被设计为实现为IEEE 754 64位二进制浮点,因此适合64位。哦,哇,这意味着我可以使用我想要的任何大小?那很简单,我可以把64位的最大值加出来!谢谢我能用双正无穷大做数学吗?例如,如果我这样做:x=100/Double.POSITIVE_无穷大它会破坏一切,还是将x设置为接近0的数字?编辑:我可以测试一下,不需要回答@DanielHicks依靠测试来学习语言特征是危险的。100/Double.正无穷正是0.我能用Double.正无穷做数学吗?例如,如果我这样做:x=100/Double.POSITIVE_无穷大它会破坏一切,还是将x设置为接近0的数字?编辑:我可以测试一下,不需要回答@DanielHicks依靠测试来学习语言特征是危险的。100/Double。正无穷大正好是0。