Double Sayılar için Gelişmiş Yuvarlama

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Double Sayılar için Gelişmiş Yuvarlama

Mesaj gönderen vkamadan »

Merhaba,
Sorun yaşadığım noktalardan birisiydi virgülden sonraki kaç sayının dikkate alınacağı ve virgüllü kısmın yuvarlanması durumu aşağıdaki hazır fonksiyonu kullanrak çözdüm.

Kod: Tümünü seç

function R2(const AValue : extended ; const ADigit : TRoundToRange) :
  extended ;
var X : extended ; i : integer ;
begin
  X := 1.0 ;
  for i := 1 to Abs(ADigit) do X := X * 10 ;
  if ADigit<0
    then Result := Round(AValue * X) / X
    else Result := Round(AValue / X) * X ;
  end;
Bu arada TRoundToRange tipini siz tanımlamalısınız şöyle ,

Kod: Tümünü seç

type TRoundToRange = -37..37;
Kullanımı basit, ilk parametre Double sayınız , ikinci parametre eğer negatif veririseniz virgülden sonraki yuvarlama basamak sayısı pozifit verirseniz tam sayının yuvarlama basamak sayısı dikkate alınır.
Örn:

Kod: Tümünü seç

r2(2.0736,-2); //2.07 sonucunu döndürür.
İyi çalışamalar.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla