De ce împărțirea la 1.8 nu funcționează, ci prin înmulțirea (5,0 / 9) nu funcționează?

voturi
1

Testez un program simplu care convertește Fahrenheit în grade Celsius, folosind Ruby.

Acest cod se întoarce 36.999999999 în terminalul.

def ftoc(far)
    return (far-32)/1.8
end

ftoc(98.6)

Acest cod returnează 37.

def ftoc(far)
    return (far-32)*(5.0/9)
end

ftoc(98.6)

Poate cineva să-mi spui de ce? Mulțumiri!!

Întrebat 15/01/2014 la 05:26
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
4

Tipul de numere pe care le utilizați sunt numite numere în virgulă mobilă.

În general, orice punct operațiune plutitor aritmetică va introduce erori de rotunjire. Nu te poți aștepta două rezultate în virgulă flotantă să fie exact egal în cazul în care acestea au fost calculate în moduri diferite; trebuie să aibă o anumită toleranță pentru erori mici.

Publicat 15/01/2014 la 05:50
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more