dodawanie do float
mierzwi 07.05.2011
Witam, dlaczego jak mam coś takiego (akurat tu odejmowanie ale przy dodawaniu też tak jest)
wycinek z serwa:
@edit: dobra naprawiłem to, lecz to ładnie nie wygląda
Użytkownik funfel edytował ten post 07.05.2011 19:16
jakis_tam_float[id] = jakis_tam_float[id] - 0.5;to jak sprawdzę jaki jest ten float to pisze -0.4, jak 2 razy dodam takie coś to pisze -1.0, a jak 3 to -1.4, tak się dzieje tylko na linuxie, na windowsie jest normalnie, może ktoś zna tego przyczynę ?
wycinek z serwa:
komenda /a odejmuje 0.5-0.4
funfel : /a
-1.0
funfel : /a
-1.4
funfel : /a
-2.0
funfel : /a
@edit: dobra naprawiłem to, lecz to ładnie nie wygląda
jakis_tam_float[id] = jakis_tam_float[id] - 0.5000001; jakis_tam_float[id] = jakis_tam_float[id] + 2.0000001;ale nadal szukam odpowiedzi dlaczego się tak dzieje.
Użytkownik funfel edytował ten post 07.05.2011 19:16
R3X
07.05.2011
musisz się liczyć z niedokładnością float, zwłaszcza na 32 bitach, liczb nawet między 0 a 1 jest nieskończenie wiele, komputer ma skończoną pamięc; w debugu printuj zawsze przynajmniej 3,4 miejsca po przecinku (%.3f) a porównywanie floatów rób przez wartość bezwzględną różnicy < np. od 0.0001
mierzwi 07.05.2011
właśnie oto chodzi że chcę %.1f czyli 1 miejsce
i tak patrze po kilku dodaniach i odejmowaniach dalej wychodzą czasem liczby x.4
dobra możesz zamknąć to panie r3x, dzięki że powiedziałeś czemu tak się dzieje, jakoś sobie poradzę.
Użytkownik funfel edytował ten post 07.05.2011 19:57
i tak patrze po kilku dodaniach i odejmowaniach dalej wychodzą czasem liczby x.4
dobra możesz zamknąć to panie r3x, dzięki że powiedziałeś czemu tak się dzieje, jakoś sobie poradzę.
Użytkownik funfel edytował ten post 07.05.2011 19:57
mierzwi 07.05.2011
zrobiłem zapis na %.5f i jak dodaję lub odejmuję to - 1.00001 lub +0.50001
Użytkownik funfel edytował ten post 07.05.2011 21:18
Użytkownik funfel edytował ten post 07.05.2011 21:18