Функция math.NaN

Функция math.NaN возвращает значение типа float64, представляющее собой специальное состояние "не число" (Not-a-Number) в стандарте IEEE 754. Это значение используется для обозначения результатов операций, которые не имеют математического смысла, например, деление нуля на ноль, умножение нуля на бесконечность или вычисление квадратного корня из отрицательного числа.

Функция не принимает никаких параметров и всегда возвращает одно и то же значение NaN.

Синтаксис

gomath.NaN()

Пример

Давайте создадим значение NaN с помощью функции math.NaN и выведем его на экран:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  nan := math.NaN()
  fmt.Println(nan)
}

Результат выполнения кода:

go"NaN"

Пример

Значение NaN обладает уникальным свойством: оно не равно самому себе. Давайте проверим это с помощью оператора сравнения:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  nan := math.NaN()
  res := nan == nan
  fmt.Println(res)
}

Результат выполнения кода:

gofalse

Пример

Для проверки, является ли значение NaN, следует использовать специальную функцию math.IsNaN, а не оператор сравнения. Давайте рассмотрим это на примере:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  nan := math.NaN()
  if math.IsNaN(nan) {
    fmt.Println("Value is NaN")
  }
}

Результат выполнения кода:

go"Value is NaN"

Пример

Любая арифметическая операция с участием NaN также возвращает NaN. Давайте проверим это, сложив NaN с обычным числом:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  nan := math.NaN()
  res := nan + 10.0
  fmt.Println(math.IsNaN(res))
}

Результат выполнения кода:

gotrue

Смотрите также

  • функцию math.IsNaN,
    которая проверяет, является ли число значением "не число"
  • функцию math.IsInf,
    которая проверяет, является ли число бесконечностью
  • функцию math.Inf,
    которая возвращает положительную или отрицательную бесконечность
  • функцию math.Max,
    которая возвращает большее из двух чисел