ibDataset.Alan.AsFloat:=123,45; ---> 123,449996948242 olu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
huseyinkucuk
Üye
Mesajlar: 142
Kayıt: 29 Nis 2005 10:03
Konum: İstanbul
İletişim:

ibDataset.Alan.AsFloat:=123,45; ---> 123,449996948242 olu

Mesaj gönderen huseyinkucuk »

Kod: Tümünü seç

begin
  DataModul.IBDataSet_Ana.Insert;
  datamodul.IBDataSet_Ana.FieldByName('DUZEY').AsInteger:=2;
  datamodul.IBDataSet_Ana.FieldByName('SG').AsInteger:=34232;
  datamodul.IBDataSet_Ana.FieldByName('UST_SG').AsInteger:=23423;
  datamodul.IBDataSet_Ana.FieldByName('KIS_DG').AsFloat:=123.45;
  datamodul.IBDataSet_Ana.Post;
end;
Arkadaşlar merhaba...



Yukarıdaki satırları hatamı bulmak için deneme amaçlı oluşturdum ama hatamı bulamadım, KIS_DG alanına 123,45 kaydetmesini beklerken 123,449996948242 kaydetti...


Öncelikle yapmak istediğimi söyleyeyim. Excel'de ondalık hanesi en fazla 2 rakamdan oluşan sayıları FireBird tabanlı veri tabanıma atmak...


IBDataSet.FieldByName(PUAN).AsFloat=WorkSheet.Cells[5,5] yaptığım zaman, örneğin excelde 5. satır 5. sütun 123,45 ise benim veri tabanıma bu değer 123,449689890789 gibi bi değer olarak kaydediliyor... RoundTo fonksiyonuyla da aşamadım... Nasıl yaparım, yardımcı olursanız sevinirim?
29.04.2005 tarihi itibariyle Delphi öğrenmeye başlayan yeni bir kullanıcı sayılabilirim.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Excel bu sayıları 2 haneli olacak şekilde yuvarlanacak şekilde gösteriyo olabilir. Sayıların asıl değeri belki o uzun şeklidir. Hücre özelliklerinden 2 haneli gösterecek şekilde ayarlanmış olabilir.

Öyle olsa bile sen bunları format fonksiyonuyla virgülden sonrasını iki sayı olacak şekilde bir stringe dönüştürüp, bidaha strtofloat ile floata dönüştürmeye dene aklıma başka bişey gelmiyor.
Kullanıcı avatarı
huseyinkucuk
Üye
Mesajlar: 142
Kayıt: 29 Nis 2005 10:03
Konum: İstanbul
İletişim:

Mesaj gönderen huseyinkucuk »

datamodul.IBDataSet_Ana.FieldByName('KIS_DG').AsFloat:=123.45;
Hocam, aynı problem bu satırda da başgösteriyor... Yani burda excel ile herhangi bir ilişki söz konusu değil, ama yine de 123.45 kaydedilmiyor da 123,449689890789 kaydediliyor... Anlamıyorum niye böylü oluyor :( :( :(
29.04.2005 tarihi itibariyle Delphi öğrenmeye başlayan yeni bir kullanıcı sayılabilirim.
Kullanıcı avatarı
huseyinkucuk
Üye
Mesajlar: 142
Kayıt: 29 Nis 2005 10:03
Konum: İstanbul
İletişim:

Mesaj gönderen huseyinkucuk »

Tamamdır arkadaşlar, hallettim... Veri Tabanında alanı float değil de Double Precision tipinde tanımlamalıymışım meğerse...@undefined, ilgin için teşekkürler... Herkese kolay gelsin...
29.04.2005 tarihi itibariyle Delphi öğrenmeye başlayan yeni bir kullanıcı sayılabilirim.
Cevapla