You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java手写牛顿法平方根计算器计算结果精度偏差问题求解

问题根因

你的计算结果精度异常是Java整数除法规则导致的:当两个int类型的数值做除法运算时,会直接截断小数部分返回整数结果,不会自动保留浮点精度。
你给出的示例代码中,121 / 10两个操作数都是int,运算结果直接被截断为12,后续计算就变成了0.5 * (12 +10) = 11.0,和预期结果不符。

修复方案

做除法运算前,先把其中一个整数操作数转换为double类型,触发浮点运算规则,即可保留小数部分。修复后的参考代码如下:

// 读取输入
int n = Integer.parseInt(TextFieldOne.getText()); // 待求平方根的正数N
int initGuess = Integer.parseInt(TextFieldTwo.getText()); // 初始猜测值A

// 转换为double后再参与运算,避免整数截断
double nDouble = n;
double guess = initGuess;
// 单次牛顿迭代计算
double newGuess = 0.5 * (nDouble / guess + guess);

代入你的示例参数121和10计算,得到的结果就是预期的11.05。

补充优化建议

牛顿法求平方根需要多次迭代才能达到更高精度,你可以增加循环逻辑,直到两次迭代的结果差值小于你需要的精度阈值(比如1e-6)再停止,不需要调用任何内置工具类就能实现高精度计算。

内容的提问来源于stack exchange,提问作者user16775832

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:09:02