【发布时间】:2019-09-15 10:58:54
【问题描述】:
给定一个int x,(int)Math.sqrt(x) 是否保证返回数学上正确的结果,对于所有非负的x,截断为整数(即floor(sqrt(x)) 的精确数学值)?
【问题讨论】:
-
@BeeOnRope 你介意提供一个错误结果和正确结果的例子吗?
-
@ngueno 当然,
(int)Math.sqrt(10)给出 3 这是正确的结果,任何其他结果都是不正确的结果。我的意思是“切掉任何小数部分的确切平方根”,即。floor()的确切结果。 -
@jasli 正确回答了这个问题,然后删除了他们的回答。简短的回答是是的。拜托,jasli,你会取消删除你的答案吗?关于它不申请
long的评论无关紧要,因为所有int值都可以用double精确表示,而long则不正确。 -
@DawoodibnKareem - 答案是正确的,但我认为推理不是,或者至少它不完整?特别是,他们根本没有提到“所有 int 值都可以用 double 精确表示”部分。我同意删除是仓促的!关于
long的观察适用,因为您可以在该答案中替换long而不会产生任何矛盾,因此如果在这种情况下答案失败,则推理无法完成。 -
没错。这就是重点。
标签: java floating-point square-root