java - 对于 int 参数,Math.sqrt 的数学结果是否正确?

标签 java floating-point square-root

给定一个 int x,对于所有非负 x(int)Math.sqrt(x) 能否保证返回数学上正确的结果,并截断为 int(即 floor(sqrt(x)) 的精确数学值)?

最佳答案

根据 Java 文档,Math.sqrt() 返回“最接近参数值的真实数学平方根的 double 值”,并且将 double 转换为 int 相当于非负数的下限(对于负数,floor() 向负无穷大截断,同时向 0 截断)。我能想到 (int)Math.sqrt(x) 无法完成这项工作的唯一情况是平方根的结果太大而无法放入 int 中。

其他链接

https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#sqrt(double)

关于java - 对于 int 参数,Math.sqrt 的数学结果是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858966/

相关文章:

double 可以表示 float 可以表示的所有值吗?

c# - 傅里叶变换舍入误差

python - 如何在 CVXPY 中取 quad_form 输出的平方根?

c - 如何在 C 中打印负数的平方根并显示 i

java - Java 中的二进制补码运算符

java - java 问题,String.getBytes 方法

javascript - Math.random 可以产生的最大值是多少?

python - "Python compute square roots of perfect squares exactly"如何(以及为什么)?

java - 索尼 IP 摄像机 opencv Java

java - 使用 PhoneStateListener 打开扬声器