我正在浏览 Go,并且在“练习:循环和函数”中遇到了 float64 比较的问题,您在其中编写了一个函数来确定平方根。
\n\n示例:\n计算机通常使用循环计算 x 的平方根。从一些猜测 z 开始,我们可以根据 z\xc2\xb2 与 x 的接近程度来调整 z,从而产生更好的猜测:
\n\nz -= (z*z - x) / (2*z)\nRun Code Online (Sandbox Code Playgroud)\n\n我编写了一个函数,该函数会继续更新 z 直到值停止变化。只有 float64 比较永远不会失败,这会导致无限循环。解决此类问题的一种方法是四舍五入,但我不确定如何在 golang 中在不使用数学模块的情况下做到这一点。
\n\n在 golang 中如何舍入 float64 数字以及在 golang 中比较浮点数的标准方法是什么?
\n\n\npackage main\n\nimport (\n "fmt"\n)\n\n\nfunc Sqrt(x float64) float64 {\n // Need to look into float rounding in go\n z := 1.0\n zprev := 0.01\n for z != zprev {\n zprev = z\n z -= (z*z - x) /(2*z)\n fmt.Printf("z: %g\\nzprev: %g\\n", …Run Code Online (Sandbox Code Playgroud) go ×1