[solved] Python - niezrozumiałe działanie porównania zmiennych
: 12 mar 2011, 17:08
Witam!
Problem jest z kodem tak banalnym, że nie wiem, jak to może nie działać... kod:
wynik jest taki:
mimo iż spodziewam się raczej:
czyli z wartością "2.0" na końcu...
Kiedy zmienię kod na:
to jakimś cudem otrzymuję to "2.0" na końcu. I to nie "2.0000000001" tylko właśnie "2.0". Kiedy zmienię d=30 na d=31 albo d=29 albo praktycznie na cokolwiek, to już działa, a dla 30 czy 60 nie. Dla d=3 też działa. Czy jest to jakaś kwestia przybliżeń? Czy co...
Nie mogę zastosować tego +0.0000000001 ponieważ wartości YMIN i YMAX oraz d mogą być bardzo zmienne i może się okazać, że są wręcz porównywalne z 0.0000000001 a wtedy kod się też będzie sypać...
Generalnie ciężka bania...
Problem jest z kodem tak banalnym, że nie wiem, jak to może nie działać... kod:
Kod: Zaznacz cały
YMIN=-2.0
YMAX=2.0
d=30
y=YMIN
while y <= YMAX:
print y
y=y+(YMAX-YMIN)/(d-1)
Kod: Zaznacz cały
-2.0
-1.86206896552
-1.72413793103
-1.58620689655
-1.44827586207
-1.31034482759
-1.1724137931
-1.03448275862
-0.896551724138
-0.758620689655
-0.620689655172
-0.48275862069
-0.344827586207
-0.206896551724
-0.0689655172414
0.0689655172414
0.206896551724
0.344827586207
0.48275862069
0.620689655172
0.758620689655
0.896551724138
1.03448275862
1.1724137931
1.31034482759
1.44827586207
1.58620689655
1.72413793103
1.86206896552
Kod: Zaznacz cały
-2.0
-1.86206896552
-1.72413793103
-1.58620689655
-1.44827586207
-1.31034482759
-1.1724137931
-1.03448275862
-0.896551724138
-0.758620689655
-0.620689655172
-0.48275862069
-0.344827586207
-0.206896551724
-0.0689655172414
0.0689655172414
0.206896551724
0.344827586207
0.48275862069
0.620689655172
0.758620689655
0.896551724138
1.03448275862
1.1724137931
1.31034482759
1.44827586207
1.58620689655
1.72413793103
1.86206896552
2.0
Kiedy zmienię kod na:
Kod: Zaznacz cały
YMIN=-2.0
YMAX=2.0
d=30
y=YMIN
while y <= YMAX+0.0000000001:
print y
y=y+(YMAX-YMIN)/(d-1)
Nie mogę zastosować tego +0.0000000001 ponieważ wartości YMIN i YMAX oraz d mogą być bardzo zmienne i może się okazać, że są wręcz porównywalne z 0.0000000001 a wtedy kod się też będzie sypać...
Generalnie ciężka bania...