Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这种双重数学有替代品吗_Java - Fatal编程技术网

Java 这种双重数学有替代品吗

Java 这种双重数学有替代品吗,java,Java,是否有一个Java操作符可以创建一个等于count但行数较少的值 double theta = //Some value; int count = 0; while (theta > 0) { theta -= pi * (1.0 / 8.0); count += 1; } 假设theta>0,类似的方法应该可以工作: int count = (int)Math.ceil (theta/(Math.PI * (1.0 / 8

是否有一个Java操作符可以创建一个等于count但行数较少的值

    double theta = //Some value;
    int count = 0;
    while (theta > 0) {
        theta -= pi * (1.0 / 8.0);
        count += 1;
    }

假设
theta>0
,类似的方法应该可以工作:

int count = (int)Math.ceil (theta/(Math.PI * (1.0 / 8.0)));


这个怎么样:
Math.ceil(theta/(pi*(1.0/8.0))

您刚刚实现了重复减法除法

所以,如果你在Java中有实际的实数,你可以

int result = (int) (theta / (Math.PI / 8)) + 1;
。。。得到同样的结果。然而,由于代码中反复出现舍入错误,这比简单的除法有更多的步骤,因此答案会有一些分歧。结果将是相同的θ高达约5500万

之所以存在舍入误差,是因为
float
double
不是实数的精确表示


另请参见:

如果
theta=Math.PI/8
@这将给出不同的输出,而如果
theta==Math.PI*8
:-)OP发布的代码既不完全是
Math.ceil
也不完全是
+1
,则您的输出会不同,两者都有边缘情况(取θ为
Math.PI/8
Math.PI*8
int result = (int) (theta / (Math.PI / 8)) + 1;