#programowanie #naukaporgramowania #protip

Jeśli w C masz 2 liczby float lub double to używanie == to zły pomysł
wynika to z błędu słowa maszynowego (spradz sobie czy 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 == 0.3*3 pewno nie będzie)
Zamiast
a==b użyj ABS(a-b) < Epsilon gdzie Epsilon to jakaś bardzo mała wartość służąca za dokładność porównania;

Dodatkowo polecam zrobić tablice 1,10,100,1000,....10^10 typu double i sumować ją pierw od dołu do góry i od góry do dołu,
Okaże się
wynika to z błędu słowa maszynowego


@wytrzzeszcz: Nie, wynika to bezpośrednio z arytmetyki liczb zmiennoprzecinkowych.

a==b użyj ABS(a-b) < Epsilon gdzie Epsilon to jakaś bardzo mała wartość służąca za dokładność porównania;


@wytrzzeszcz: W C będzie to fabs, nie abs. Abs jest przeciążony dla liczb zmiennoprzecinkowych w C++.

Okaże się że do bardzo dużej wartości nie da się dodać bardzo małej bo ta nie zmieniści się w słowie maszynowym


@wytrzzeszcz:
Plakat III Grand Festival Róbrege, odbywającego się w Warszawie, w namiocie cyrkowym "Intersalto" w dniach 18-20 października 1985. Pomysłodawcą był Robert Brylewski.

Tak wspomina festiwal Muniek:

"Paradoksem było to, że wszystkie grupy ówczesnego offu – Kult, Izrael, Dezerter, Armia, T. Love – skupiły się przy klubie Hybrydy, którego szefem był Sławek Rogowski. Miał mocno czerwone plecy, ale zrobił kilka dobrych rzeczy. Robert Brylewski wymyślił festiwal Róbrege i Rogowski pomógł go zorganizować. Nie
bred_one - Plakat III Grand Festival Róbrege, odbywającego się w Warszawie, w namioci...

źródło: comment_nsK9qIOc1BLt4RQS8oInHb9GzERRiYky.jpg

Pobierz