go中的平方负数

Posted

技术标签:

【中文标题】go中的平方负数【英文标题】:Square negative number in go 【发布时间】:2018-10-30 23:00:17 【问题描述】:

我在对负数求平方时遇到问题...

(2*(1-0.5)-4)/((4*(4-2))/(2-1))^(1/2) = -1.06066017

但是随着 go 我得到 NaN

package main
import (
    "fmt"
    "math"
)

func main() 
    fmt.Print(math.Sqrt((2*(1-0.5) - 4) / ((4 * (4 - 2)) / (2 - 1))))

或者如果我像这样使用math.Abs

fmt.Print(math.Sqrt(math.Abs((2*(1-0.5) - 4) / ((4 * (4 - 2)) / (2 - 1)))))

我回复了:0.6123724356957 那不正确,正确的结果是:-1.06066017

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

问题是:

(2*(1-0.5)-4)/((4*(4-2))/(2-1))^(1/2)

在您的计算器中计算为(2*(1-0.5)-4) 除以((4*(4-2))/(2-1))^(1/2),这确实得出-1.06..

但是你给了 Go (2*(1-0.5)-4)/((4*(4-2))/(2-1)),这是一个负数,并告诉它计算它的平方根,这会很复杂。

那就试试吧:

fmt.Print((2*(1-0.5) - 4) / math.Sqrt(((4 * (4 - 2)) / (2 - 1))))

【讨论】:

随意接受答案,让其他人看到,问题已解决;)

以上是关于go中的平方负数的主要内容,如果未能解决你的问题,请参考以下文章

C语言之linux内核实现平方根计算算法

C语言中怎么计算一个数的平方?

修正java中的公式

golang Go:Newton的平方根方法

你如何处理 golang 中的 float64 比较?

为啥AngularJS货币过滤器格式负数用括号