1

Konu: INT() ile sorun

Herkese merhaba

Command pencerede komutlari girince, sonuçlar doğru. Ama programın içinde hatalı sonuç geliyor.

Visual Fox Pro
SET DECIMAL TO 2

SET FIXED ON   && veya OFF, farketmiyor
...
...
nKurus = .nToplamYTL.VALUE - INT(.nToplamYTL.VALUE)    && burda INT dogru sonucu veriyor
IF nKurus > 0    && burda nKurus 0,47
  nKurus = INT(nKurus  * 100)    && 47 yerine 46 veriyor
  ...
  ...
ENDIF

Şu an ROUND(nKurus * 100,0) ile idare ediyorum.
Sorunun kaynağını bir türlü bulamadım. Yardımlarınız için şimdiden teşekkür

http://i.imgur.com/lerN7.gif

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

2

Re: INT() ile sorun

O sayının 0.47 yani 0.47000000000 oldugundan emin misin. Buyuk ihtimalle 0.469999999 gibi birseydir. Dogrudan VFP'nin sucu degil IEEE ile kesirli sayılar tam tanımlanamıyor.

Visual Fox Pro
int(Ntom(m.nSayi) * 100)

3 Son düzenleyen, Mehmet K (29.01.2012 16:09:04)

Re: INT() ile sorun

Merhaba Çetin

SET DECIMAL TO 10
yaptım ve .nToplamYTL.VALUE kontrol ettim: 210,4700000000

NTOM 'a gelince: bugüne kadar böyle bir komut olduğunu bilmiyordum bile!! big_smile
Onun ile belirtiğim hata oluşmiyor. Ama INT() komutunu çok yerde kullandığım için, çok tedirginim.

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

4

Re: INT() ile sorun

ntom'u ben de bilmiyordum doğrusu. cast kullanıyordum onun yerine.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

5

Re: INT() ile sorun

Mehmet,
Bence o sayi .0469999999999999999999999999 gibi birsey. VFP ne yazik ki 15 digit kapasiteye sahip ve dogru gostermiyor.

? m.nSayi == 210.47

ile test et. Sanirim .F. donecek (ayni sorun C'de double ile de var). Ntom() money'e ceviriyor, money maximum 4 decimal garantiledigi icin cozuyor.

6

Re: INT() ile sorun

Çetin, haklısın.
Görsel 0,47 olan nKurus, 0,47 ile sorgulandığında .F. geliyor.
sad

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.