Функция strconv.AppendFloat

Функция strconv.AppendFloat преобразует число с плавающей точкой в строковое представление согласно заданному формату и точности, а затем добавляет полученную строку в виде байтов в конец переданного байтового среза. Первым параметром функция принимает байтовый срез []byte, в который будет добавлен результат. Вторым параметром передается число с плавающей точкой типа float64, которое нужно преобразовать. Третьим параметром указывается формат вывода (например, 'f' для десятичного представления или 'e' для экспоненциальной записи). Четвертый параметр задает точность - количество знаков после запятой. Пятый параметр определяет размер числа (32 для float32 или 64 для float64). Функция возвращает новый байтовый срез, содержащий исходные данные и добавленное строковое представление числа.

Синтаксис

gostrconv.AppendFloat(dst, f, fmt, prec, bitSize)

Пример с десятичным форматом

Давайте преобразуем число 123.456 в десятичный формат с точностью до двух знаков:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  dst := []byte("Result: ")
  res := strconv.AppendFloat(dst, 123.456, 'f', 2, 64)
  fmt.Println(string(res))
}

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

go"Result: 123.46"

Пример с экспоненциальным форматом

Давайте преобразуем число 123.456 в экспоненциальный формат с точностью до двух знаков:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  dst := []byte("Result: ")
  res := strconv.AppendFloat(dst, 123.456, 'e', 2, 64)
  fmt.Println(string(res))
}

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

go"Result: 1.23e+02"

Пример с разной точностью

Давайте сравним вывод числа 1.23456789 с разной точностью:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  num := 1.23456789
  dst := []byte("")

  res1 := strconv.AppendFloat(dst, num, 'f', 2, 64)
  res2 := strconv.AppendFloat(dst, num, 'f', 4, 64)
  res3 := strconv.AppendFloat(dst, num, 'f', 8, 64)

  fmt.Println(string(res1))
  fmt.Println(string(res2))
  fmt.Println(string(res3))
}

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

go"1.23"
"1.2346"
"1.23456789"

Пример с добавлением в существующий срез

Давайте добавим несколько чисел в один байтовый срез:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  dst := []byte("Numbers: ")

  dst = strconv.AppendFloat(dst, 1.23, 'f', 1, 64)
  dst = append(dst, ' ')
  dst = strconv.AppendFloat(dst, 4.56, 'f', 1, 64)
  dst = append(dst, ' ')
  dst = strconv.AppendFloat(dst, 7.89, 'f', 1, 64)

  fmt.Println(string(dst))
}

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

go"Numbers: 1.2 4.6 7.9"

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

  • функцию strconv.FormatFloat,
    которая преобразует число с плавающей точкой в строку
  • функцию strconv.ParseFloat,
    которая преобразует строку в число с плавающей точкой
  • функцию strconv.AppendInt,
    которая добавляет целое число в байтовый срез
  • функцию strconv.AppendUint,
    которая добавляет беззнаковое целое число в байтовый срез