Квадратное отрицательное число в го - PullRequest
0 голосов
/ 31 октября 2018

У меня проблемы с квадратом отрицательного числа в го ...

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

но с ходу я получаю 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 Ответ

0 голосов
/ 31 октября 2018

Проблема:

(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))))
...