Avatar ·

Convertendo float64 para int em Go: como descartar corretamente a parte fracionária?

Olá a todos! Comecei a estudar Go recentemente e me deparei com um problema ao converter números de ponto flutuante para inteiros. Preciso converter um valor do tipo `float64` para `int`, mas não tenho certeza de como fazer isso corretamente. Por exemplo, tenho o código: ```go package main import "fmt" func main() { var price float64 = 19.99 var result int = int(price) fmt.Println(result) // Exibe 19 } ``` A conversão simples `int(price)` funciona, mas notei que ela simplesmente descarta a parte fracionária (trunca em direção a zero). E se eu precisar arredondar para o inteiro mais próximo? Ou talvez eu queira obter o "teto" (ceil) ou o "piso" (floor)? Além disso, li que em Go não há conversão implícita automática entre tipos numéricos. Isso significa que sempre devo fazer uma conversão explícita? E quanto à segurança? E se o número for muito grande e não couber em `int` (por exemplo, em um sistema de 32 bits, `int` tem 32 bits, e em um de 64 bits, tem 64 bits)? Por favor, me ajudem.