Middle
Float sayıların karşılaştırılması neden yanlış olabilir ve bununla nasıl başa çıkılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Ondalık sayıların (float) karşılaştırılması, bellek içindeki temsil özellikleri nedeniyle yanlış olabilir. Ondalık sayılar IEEE 754 formatında saklanır ve bu, her zaman ondalık kesirleri tam olarak temsil edemeyebilir, bu da yuvarlama hatalarına yol açar.
Örneğin, 0.1 + 0.2 == 0.3 ifadesi küçük hatalar nedeniyle false dönebilir.
Bu sorunu çözmek için genellikle sayıları küçük bir delta (epsilon) dikkate alarak karşılaştırılır:
const epsilon = 1e-9
func floatEquals(a, b float64) bool {
return math.Abs(a - b) < epsilon
}
Bu şekilde, doğrudan a == b karşılaştırması yerine, sayıların farkının yeterince küçük olup olmadığı kontrol edilir. Bu, sayıların belirsiz temsilinden ve hesaplamalarda biriken hatalardan kaynaklanan hataları önlemeye yardımcı olur.