Delphi Can

Orjinalini görmek için tıklayınız: Calculated Alanda Ondalık Sayısı Nasıl Belirlenir?
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba,
PostgreSQL veri tabanında bir hesaplama yaparak sonuç alıyorum. 
'% '||(t1.top*100 / t2.toplam) AS yuzdelik
Yukarıdaki işlem sonucunda tam sayı dönüyor. İki basamak ondalık hassasiyeti olması için hangi fonksiyon veya metodu kullanmalıyım.
(11-06-2019, Saat: 16:58)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
PostgreSQL veri tabanında bir hesaplama yaparak sonuç alıyorum. 
'% '||(t1.top*100 / t2.toplam) AS yuzdelik
Yukarıdaki işlem sonucunda tam sayı dönüyor. İki basamak ondalık hassasiyeti olması için hangi fonksiyon veya metodu kullanmalıyım.

Merhabalar,

Test etme imkanım malesef olmadığı için bir örnek gördüm işinize yarar umarım.

1.
NUMERIC(precision, scale) 

2.
SELECT round( CAST(amount AS NUMERIC), 2) AS rounded_amount
FROM payment;

Kolay gelsin.
(11-06-2019, Saat: 17:07)hi_selamlar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(11-06-2019, Saat: 16:58)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
PostgreSQL veri tabanında bir hesaplama yaparak sonuç alıyorum. 
'% '||(t1.top*100 / t2.toplam) AS yuzdelik
Yukarıdaki işlem sonucunda tam sayı dönüyor. İki basamak ondalık hassasiyeti olması için hangi fonksiyon veya metodu kullanmalıyım.

Merhabalar,

Test etme imkanım malesef olmadığı için bir örnek gördüm işinize yarar umarım.

1.
NUMERIC(precision, scale) 

2.
SELECT round( CAST(amount AS NUMERIC), 2) AS rounded_amount
FROM payment;

Kolay gelsin.

Çok teşekkür ederim.
Verdiğiniz kodu test etme imkanı bulamadım fakat aşağıdaki şekilde sorunu çözdüm.
to_char( 100.0 * t1.top / t2.toplam, '% 990D99' ) AS yuzdelik
round(v numeric, s int) round to s decimal places round(42.4382, 2) sonuç = 42.44

trunc(v numeric, s int) truncate to s decimal places trunc(42.4382, 2) sonuç = 42.43

Ben hep yukarıdaki fonksiyonları kullanıyorum. Birisi yuvarlıyor diğeri ise olduğu gibi ondalık kısmı ne kadar isterseniz o kadarını alıyor.

Fonksiyonların tamamının olduğu kaynak. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(11-06-2019, Saat: 17:33)3ddark Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
round(v numeric, s int) round to s decimal places round(42.4382, 2) sonuç = 42.44

trunc(v numeric, s int) truncate to s decimal places trunc(42.4382, 2) sonuç = 42.43

Ben hep yukarıdaki fonksiyonları kullanıyorum. Birisi yuvarlıyor diğeri ise olduğu gibi ondalık kısmı ne kadar isterseniz o kadarını alıyor.

Fonksiyonların tamamının olduğu kaynak. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Bu fonksiyonu kullanmak sanırım daha doğru olacak. Teşekkür ederim.
firebirdde bu tür bir sorunu bölmeden önce her iki sayısıda cast komutuyla Numeric(10,2) çevirip bölmüştüm ve istediğim hassasiyete o şekilde ulaştım.