Java 这种双重数学有替代品吗
是否有一个Java操作符可以创建一个等于count但行数较少的值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
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;