小编Lan*_*nce的帖子

golang 中如何处理 float64 比较?

我正在浏览 Go,并且在“练习:循环和函数”中遇到了 float64 比较的问题,您在其中编写了一个函数来确定平方根。

\n\n

示例:\n计算机通常使用循环计算 x 的平方根。从一些猜测 z 开始,我们可以根据 z\xc2\xb2 与 x 的接近程度来调整 z,从而产生更好的猜测:

\n\n
z -= (z*z - x) / (2*z)\n
Run 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

5
推荐指数
1
解决办法
6524
查看次数

标签 统计

go ×1