Sobes.tech
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.