Comparaison Go Float : une approche globale
La comparaison de nombres à virgule flottante (flotteurs) pour l'égalité dans Go nécessite une approche nuancée en raison de limitations et complexités inhérentes à l'arithmétique à virgule flottante.
Utilisation de la représentation binaire : une méthode limitée Solution
Le code fourni compare les flotteurs en examinant leurs représentations binaires et en tenant compte d'une différence d'un bit. Cependant, cette approche est imparfaite car elle ne tient pas compte de l’importance de la position du bit dans la représentation binaire. Par exemple, une différence dans le bit le moins significatif pour de très grands flotteurs peut être sans conséquence, tandis que pour de très petits flotteurs, elle pourrait représenter un écart significatif.
Une approche plus précise et générique
Une méthode plus robuste et précise consiste à calculer la différence entre les deux flotteurs à l'aide de la fonction math.Abs. En définissant un seuil approprié, vous pouvez déterminer si la différence est négligeable et considérer les flotteurs « presque égaux ».
Cette approche vous permet de :
Exemple de mise en œuvre
Vous trouverez ci-dessous un exemple de mise en œuvre :
import ( "fmt" "math" ) const float64EqualityThreshold = 1e-9 func almostEqual(a, b float64) bool { return math.Abs(a - b) <= float64EqualityThreshold } func main() { a := 0.1 b := 0.2 fmt.Println(almostEqual(a + b, 0.3)) // true }
Cette solution est plus générique et adaptable, vous permettant de gérez divers scénarios et définissez le seuil d'égalité de manière appropriée pour votre application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!