Константа math.SmallestNonzeroFloat64

Константа math.SmallestNonzeroFloat64 представляет собой наименьшее положительное ненулевое число, которое может быть представлено типом float64 в языке Go. Это значение равно примерно 5e-324 и соответствует минимальному денормализованному числу, которое может храниться в 64-битном формате IEEE 754. Данная константа полезна при работе с числами, близкими к нулю, и при проверке граничных условий в математических вычислениях.

Синтаксис

gomath.SmallestNonzeroFloat64

Пример

Давайте выведем значение константы math.SmallestNonzeroFloat64 и сравним его с нулем:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  res := math.SmallestNonzeroFloat64
  fmt.Printf("SmallestNonzeroFloat64: %e\n", res)
  fmt.Printf("Is zero? %v\n", res == 0)
}

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

go"SmallestNonzeroFloat64: 5.000000e-324"
"Is zero? false"

Пример

Продемонстрируем разницу между math.SmallestNonzeroFloat64 и 0 в арифметических операциях:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  smallest := math.SmallestNonzeroFloat64
  res1 := smallest / 2
  res2 := smallest + smallest
  fmt.Printf("Divided by 2: %e\n", res1)
  fmt.Printf("Sum: %e\n", res2)
}

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

go"Divided by 2: 0.000000e+00"
"Sum: 1.000000e-323"

Пример

Используем math.SmallestNonzeroFloat64 для проверки граничных условий при делении:

gopackage main

import (
  "fmt"
  "math"
)

func main() {
  res1 := math.IsInf(1/math.SmallestNonzeroFloat64, 1)
  res2 := math.IsNaN(1 / math.SmallestNonzeroFloat64)
  fmt.Printf("Is +Inf? %v\n", res1)
  fmt.Printf("Is NaN? %v\n", res2)
}

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

go"Is +Inf? true"
"Is NaN? false"

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

  • константу math.MaxFloat64,
    которая представляет максимальное положительное значение float64
  • константу math.Pi,
    которая представляет значение числа π
  • функцию math.IsNaN,
    которая проверяет является ли число NaN
  • функцию math.IsInf,
    которая проверяет является ли число бесконечностью