Плывите по течению: точное округление чисел с плавающей запятой в Golang

В Go (Golang) работа с числами с плавающей запятой — обычная задача. Иногда вам может потребоваться округлить число с плавающей запятой до определенного количества цифр точности. В этом сообщении блога мы рассмотрим несколько методов достижения этой цели, используя разговорный язык и попутно предоставляя примеры кода. Итак, приступим!

Метод 1: использование функции math.Round
Функция math.Round— это встроенная функция в Go, которую можно использовать для округления числа с плавающей запятой до ближайшего целого. число. Чтобы округлить число с плавающей запятой до определенного количества цифр точности, мы можем умножить число с плавающей запятой на степень 10, округлить его до ближайшего целого числа, а затем разделить на ту же степень 10. Вот пример:

import (
    "fmt"
    "math"
)
func main() {
    number := 3.14159
    precision := 2
    rounded := math.Round(number*math.Pow(10, float64(precision))) / math.Pow(10, float64(precision))
    fmt.Println(rounded) // Output: 3.14
}

Метод 2: использование функции strconv.FormatFloat.
Пакет strconvв Go предоставляет удобную функцию под названием FormatFloat, которая позволяет нам форматировать число с плавающей запятой с определенным количеством цифр точности. Мы также можем использовать эту функцию для округления. Вот пример:

import (
    "fmt"
    "strconv"
)
func main() {
    number := 3.14159
    precision := 2
    rounded, _ := strconv.ParseFloat(strconv.FormatFloat(number, 'f', precision, 64), 64)
    fmt.Println(rounded) // Output: 3.14
}

Метод 3. Использование собственной логики округления
Если вам нужен больший контроль над процессом округления, вы можете реализовать свою собственную логику округления с помощью математических операций. Вот пример округления до определенного количества цифр точности:

import (
    "fmt"
    "math"
)
func roundToPrecision(number float64, precision int) float64 {
    scale := math.Pow(10, float64(precision))
    return math.Round(number*scale) / scale
}
func main() {
    number := 3.14159
    precision := 2
    rounded := roundToPrecision(number, precision)
    fmt.Println(rounded) // Output: 3.14
}

В этой записи блога мы рассмотрели три различных метода округления чисел с плавающей запятой до определенного количества цифр точности в Go. Независимо от того, предпочитаете ли вы использовать встроенные функции, такие как math.Round, функцию strconv.FormatFloat, или собственную логику округления, теперь вы можете уверенно и точно округлять числа с плавающей запятой в своих программах на Go. Приятного кодирования!