Функция math.Nextafter
Функция math.Nextafter возвращает следующее представимое
число с плавающей точкой после x в направлении y.
В первый параметр мы передаем исходное число, во второй параметр
мы передаем целевое число, в направлении которого будет выполняться
поиск следующего представимого значения. Если x и y
равны, функция возвращает x. Функция работает с типами
float64 и возвращает значение того же типа.
Синтаксис
math.Nextafter(x, y float64) float64
Пример
Давайте найдем следующее представимое число после 1.0 в положительном направлении:
package main
import (
"fmt"
"math"
)
func main() {
res := math.Nextafter(1.0, 2.0)
fmt.Println(res)
}
Результат выполнения кода:
1.0000000000000002
Пример
Давайте найдем следующее представимое число после 1.0 в отрицательном направлении:
package main
import (
"fmt"
"math"
)
func main() {
res := math.Nextafter(1.0, 0.0)
fmt.Println(res)
}
Результат выполнения кода:
0.9999999999999999
Пример
Давайте сравним поведение функции при равных значениях в параметрах:
package main
import (
"fmt"
"math"
)
func main() {
res := math.Nextafter(3.14, 3.14)
fmt.Println(res)
}
Результат выполнения кода:
3.14
Пример
Давайте используем функцию для перебора чисел в цикле с шагом в одно представимое значение:
package main
import (
"fmt"
"math"
)
func main() {
x := 1.0
for i := 0; i < 3; i++ {
fmt.Printf("%.20f\n", x)
x = math.Nextafter(x, 2.0)
}
}
Результат выполнения кода:
"1.00000000000000000000"
"1.00000000000000022204"
"1.00000000000000044409"
Смотрите также
-
функцию
math.Pow,
которая возводит число в степень -
функцию
math.Sqrt,
которая вычисляет квадратный корень -
функцию
math.Abs,
которая возвращает абсолютное значение числа -
функцию
math.Copysign,
которая копирует знак одного числа в другое