Функция strconv.AppendFloat
Функция strconv.AppendFloat преобразует число с плавающей точкой
в строковое представление согласно заданному формату и точности,
а затем добавляет полученную строку в виде байтов в конец переданного
байтового среза. Первым параметром функция принимает байтовый срез
[]byte, в который будет добавлен результат. Вторым параметром
передается число с плавающей точкой типа float64, которое
нужно преобразовать. Третьим параметром указывается формат вывода
(например, 'f' для десятичного представления или 'e'
для экспоненциальной записи). Четвертый параметр задает точность -
количество знаков после запятой. Пятый параметр определяет размер
числа (32 для float32 или 64 для
float64). Функция возвращает новый байтовый срез,
содержащий исходные данные и добавленное строковое представление
числа.
Синтаксис
strconv.AppendFloat(dst, f, fmt, prec, bitSize)
Пример с десятичным форматом
Давайте преобразуем число 123.456 в десятичный формат с точностью до двух знаков:
package main
import (
"fmt"
"strconv"
)
func main() {
dst := []byte("Result: ")
res := strconv.AppendFloat(dst, 123.456, 'f', 2, 64)
fmt.Println(string(res))
}
Результат выполнения кода:
"Result: 123.46"
Пример с экспоненциальным форматом
Давайте преобразуем число 123.456 в экспоненциальный формат с точностью до двух знаков:
package main
import (
"fmt"
"strconv"
)
func main() {
dst := []byte("Result: ")
res := strconv.AppendFloat(dst, 123.456, 'e', 2, 64)
fmt.Println(string(res))
}
Результат выполнения кода:
"Result: 1.23e+02"
Пример с разной точностью
Давайте сравним вывод числа 1.23456789 с разной точностью:
package 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))
}
Результат выполнения кода:
"1.23"
"1.2346"
"1.23456789"
Пример с добавлением в существующий срез
Давайте добавим несколько чисел в один байтовый срез:
package 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))
}
Результат выполнения кода:
"Numbers: 1.2 4.6 7.9"
Смотрите также
-
функцию
strconv.FormatFloat,
которая преобразует число с плавающей точкой в строку -
функцию
strconv.ParseFloat,
которая преобразует строку в число с плавающей точкой -
функцию
strconv.AppendInt,
которая добавляет целое число в байтовый срез -
функцию
strconv.AppendUint,
которая добавляет беззнаковое целое число в байтовый срез