Middle+
Como evitar o problema de ponto flutuante sem usar NUMERIC? Qual é uma abordagem alternativa com o tipo INT?
sobes.tech IA
Resposta da IA
O problema de ponto flutuante surge devido à precisão limitada na representação de números com parte fracionária nos tipos float ou double. Para evitar erros de arredondamento sem usar o tipo NUMERIC (que garante uma aritmética de ponto fixo precisa), muitas vezes é adotada uma abordagem com tipos inteiros (INT).
A ideia é armazenar os valores nas unidades mínimas, por exemplo, em vez de armazenar 12,34, armazenar 1234 (multiplicando por 100). Assim, todas as operações são feitas com números inteiros, o que elimina os erros de arredondamento característicos do float.
Exemplo em Go:
package main
import "fmt"
func main() {
// Guardamos o dinheiro em centavos (número inteiro)
var priceCents int = 1234 // 12,34 rublos
// Adicionamos 0,66 rublos (66 centavos)
priceCents += 66
fmt.Printf("Preço: %d.%02d rublos\n", priceCents/100, priceCents%100)
}
Este método é amplamente utilizado em aplicações financeiras onde a precisão e a ausência de erros de arredondamento são importantes.