
Баг: Ожидание, что `fmt.Sprint(0.1+0.2)` даст "0.3"
Что делают:
Печатают сумму и удивляются "0.30000000000000004".
Почему ошибка:fmt.Sprint выводит число с достаточной точностью, чтобы при обратном чтении получить то же самое двоичное представление. Для чисел с погрешностью это даёт длинные хвосты.
Как правильно:
Использовать форматирование с фиксированной точностью:
s := fmt.Sprintf("%.2f", 0.1+0.2) // "0.30"Загрузка...