Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Öne çıkan mesajlar

Mesaj tarihi:
çok ilginç bi sorunla karşı karşıyayım çok basite indirgeyerek sorayım belki benim matematiğimde bi sorun var

for ($i = 0.4;$i <= 1.2;$i=$i+0.4) {
echo "$i
";
}
?>


0.4 den 1.2 ye 0.4 li saydırmak istiyorum çıkması gereken sonuc

0.4
0.8
1.2

fakat sonuc
0.4
0.8


çıkıyor

neden olabilir bu


daha da ilginç bişey söyleyeyim aynı şekilde 0.8 den 1.6 ya saydırdığımda bi sorun yok sonuc istediğim gibi
0.8
1.2
1.6

php versionum 5.2.0

saygılar
Mesaj tarihi:
for dongusunde yaptigin islem, under the hood, float veya double ise , gordugun sekilde represent edilmezler memory de.

Ornek olarak, 0.4 yazarsin, memory represent sekli 0.3999999999988 seklindedir. Tabi ki toplama cikarma yapinca isler karisir, hele ki bu islemler mantik test eden satirlar, daha fenasi finansal applicationlarda rapor sunan algoritmalar ise vay haline, atla kopruden.

double ile karsilastirma yapiyorsan aralik degerine epsilon degeri eklemen yerinde olur, nedir 3.2 den kucuk degerler ise aradigin, 3.29 diye bakacaksin ( epsilon=0.09).
Mesaj tarihi:
Arlooax said:

for dongusunde yaptigin islem, under the hood, float veya double ise , gordugun sekilde represent edilmezler memory de.

Ornek olarak, 0.4 yazarsin, memory represent sekli 0.3999999999988 seklindedir. Tabi ki toplama cikarma yapinca isler karisir, hele ki bu islemler mantik test eden satirlar, daha fenasi finansal applicationlarda rapor sunan algoritmalar ise vay haline, atla kopruden.

double ile karsilastirma yapiyorsan aralik degerine epsilon degeri eklemen yerinde olur, nedir 3.2 den kucuk degerler ise aradigin, 3.29 diye bakacaksin ( epsilon=0.09).


Sunu yazacaktim bende lakin hazir yazilmisi varmis.

<=, >= kullanmayin cok gerekmedikce, kullanirsaniz da ya type casting yapin integer'a ya da daha dusuk/buyuk deger verin iste.
×
×
  • Yeni Oluştur...