Рассмотрим эти два случая:Почему эти два float64 имеют разные значения?
fmt.Println(912 * 0.01)
fmt.Println(float64(912) * 0.01)
второй отпечатки 9.120000000000001, что на самом деле хорошо, I understand why that is happening.
Однако почему первая строка печатает 9.12, без ... 01 в конце? Does Go умножает две нетипизированные константы и просто заменяет их литералом 9.12 при компиляции?
Возможный дубликат [Является ли математика с плавающей запятой?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – asawyer
@asawyer Не совсем. ОП задается вопросом, почему эти два дают разные результаты, а не почему один из результатов не совсем соответствует 9.12. – fuz