Round() fonksiyonu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Round() fonksiyonu

Mesaj gönderen mmg »

Merhabalar,

Delphi 10.2 ve SQLEXPRESS vt kulanıyorum. Round() fonksiyonu kullanımı ile ilgili problemim var. Select ve update sql cümlelerinde Round() fonksiyonunu kullanabiliyorum fakat kod içinde değişken içinde kullanamıyorum, bunun nedeni nedir acaba ?


Çalışıyor,

Kod: Tümünü seç

UPDATE STOKMIZAN SET CIKANMIK= Round(CIKANMIK + :vCIKANMIK, 2)
Çalışıyor,

Kod: Tümünü seç

SELECT Round(SUM(STOKMIZAN.CIKANMIK),2) AS TOPLAM_CIKAN FROM STOKMIZAN

Çalışmıyor,
Değişken ile Round() fonksiyonunu kullanamıyorum, aşağıda görülen hatayı veriyor.

Kod: Tümünü seç

var
deger1,deger2: double;
begin
  deger1:= 124.245
  deger2:= round(deger1,2)
end;

[dcc32 Error] kod.pas(3956): E2029 ')' expected but ',' found
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Round() fonksiyonu

Mesaj gönderen ertank »

Merhaba,

Örnek olarak verilen kodda birden fazla hata var.
1- satır sonlarındaki ; işaretleri eksik.
2- Kullanılan Round fonsiyonu ondalıklı bir değeri Int64'e çevirir. Amaca uygun yuvarlama fonksiyonu System.Math.RoundTo() veya System.Math.SimpleRoundTo() olmalı.
3- Yuvarlama konusu çok ama çok sorunlu bir konu olabiliyor. Basit işlemler için genelde problem çıkmasa da sistem matematik işlemcisi (FPU) parametreleri yanlış ise yuvarlama sonuçları yukarı/aşağı oynamalar yapıyor.

Eğer sürekli sıfırdan büyük rakamları yuvarlayacak iseniz System.Math.SimpleRoundTo() kullanabilirsiniz. 0.345 ifadesini iki haneye yuvarladığında her zaman 0.35 yapacaktır. Daha detaylı açıklama için ilgili fonksiyon yardım sayfasına bakabilirsiniz.

Aşağıda Delphi 10.3.3 ile çalışan kod örneğini bulabilirsiniz

Kod: Tümünü seç

uses
  System.Math;

procedure TForm1.Button1Click(Sender: TObject);
var
  deger1: Double;
  deger2: Double;
begin
  deger1 := 124.245;
  deger2 := SimpleRoundTo(deger1, -2);
end;
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Round() fonksiyonu

Mesaj gönderen m_ekici »

Bilgisayardaki kuruş hanesi , (virgül) ise rakam (124,245) hata veriyordur. Onu nokta ile değiştirirmisin.
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Round() fonksiyonu

Mesaj gönderen mmg »

Merhaba,

Ondalık ayracı nokta, basamak gruplandırma virgül fakat bu hatayı ısrarla veriyor. Anlayamıyorum, bu kadar basit bir fonksiyon fakat düşündüğümüz çalışmıyor. Select ve update sql'de çalışıp kod içinde çalışmaması çok ilginç.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Round() fonksiyonu

Mesaj gönderen freeman35 »

kelime ortak olsada, SQL başka bir şey pascal başka bir şey.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Round() fonksiyonu

Mesaj gönderen m_ekici »

Sql de Trace alman mümkün ise giden koda bakabilirmisin?
Cevapla