Перейти к выпуску fmt float64
Я наткнулся на небольшую ошибку в моем понимании пакета go fmt
Это относится к следующему коду:
импорт "фмт"
func main() {
var smallFloat float64 = 0.123456789
var bigFloat float64 = 123456789000
fmt.Println(fmt.Sprintf("%f", smallFloat))
fmt.Println(fmt.Sprintf("%f", bigFloat))
}
Выход:
0.123457
123456789000.000000
Я не хочу использовать научную нотацию, поэтому думал, что%f будет соответствовать моим потребностям. Я могу видеть на странице форматирования ( https://golang.org/pkg/fmt/), что это говорит:
The default precision for %e and %f is 6; for %g it is the smallest number of digits necessary to identify the value uniquely.
Есть ли способ использовать пакет fmt, который позволил бы мне представить полное десятичное значение smallFloat, при этом не добавляя 6 нулей в конец bigFloat?
1 ответ
Решение
Ты можешь использовать strconv.FormatFloat
с предварительным значением -1:
fmt.Println(strconv.FormatFloat(big, 'f', -1, 64))
fmt.Println(strconv.FormatFloat(small, 'f', -1, 64))
печать
123456789000
0.123456789
Детская площадка: http://play.golang.org/p/7p8xnQ_BzE.