strtofloat ve single

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

strtofloat ve single

Mesaj gönderen mkysoft »

bu iksini bir arada kullanınca nedense çevirilen sayının sonuna bir sürü 0 ekleyip en sonuna rakamlar yazıyor. örnek vermek gerekirse;
var
a:singler;
b:string;
begin
b:='0,6';
a:=strtofloat(b); // a=0,6000000234 gibi dönüşüyor.
end;


single yerine double kullanınca bu problem olmuyor. nedenini çözemedim.
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

a yı extended tanımla... :!:
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: strtofloat ve single

Mesaj gönderen rsimsek »

mkysoft yazdı: var
a:singler;
b:string;
begin
b:='0,6';
a:=strtofloat(b); // a=0,6000000234 gibi dönüşüyor.
end;


single yerine double kullanınca bu problem olmuyor. nedenini çözemedim.


kodları [ color ] [ /color ] tag ları içinde değil de tagları içinde yazarsan daha şık durur :idea:

Soruna gelince sanırım SINGLE tipini float a çevirirken bir hata oluşmakta. Bunun yerine REAL, DOUBLE veya EXTENDED kullanabilirsin :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

bende farklı türler kullanınca hatanın oluşmadığını fark ettim ama neden yapıyor?
benzer şelikde dynamic array olan iki değişkeni bir birine eşitleyerek kopyalarsanız bazen diğerinde yaptığınız değişiklik ötekinide etkiliyor ama bu her zaman olmuyor. kendimce bunu nedenin değerleri kopyalamak yerine poiter'ları birbirine eşitliyordur diye düşündüm. ama her zaman yapmıyor bunu. dynamic arrayları kopyalarken copy function ile kopyalamayı unutmayın.
örnek

Kod: Tümünü seç

var
a: array of array of integer;
begin
 setlength(a,2,3);
 a[0,0]:=5;
 a[0,1]:=2;
 a[0,2]:=6;
 a[1]:=a[0]; //bunu yapmayalım
 a[1]:=copy(a[0],3); //doğrusu bu
end;
rsimsek teşekkürler bende nasıl yapılıyor diye merak ediyordum. code'un ne olduğunu çözemedim bu nedenle color yapmıştım.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Compiler'ın çalışma mantığı ve veri tipi yapısı ile alakalı. Normal yani.

Single düşük hassaslıkta çözümlerde kullanıldığından virgülden sonraki 7. basamaktan sonraki değerler zaten işleminizi etkilemeyecektir. Yüksek hassaslık için Extended gibi uygun tipleri kullanın.
Cevapla