İki faklı sayı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

İki faklı sayı

Mesaj gönderen Dostk »

Selam.

Elimde iki farklı sayı var biri tam diğeri ondalıklı sayı, noktadan sonrasını nasıl atabilirim, nokta bazen 1.7 gibi de oluyor...

if '3' <= '13.250' then
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: İki faklı sayı

Mesaj gönderen greenegitim »

math kütüphanesindeki ceil, floor işinizi görürmü?
Mücadele güzelleştirir!
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: İki faklı sayı

Mesaj gönderen fesiharslan »

Merhaba;
Amacınız sayıyı yuvarlayarak kullanmaksa; Ceil, Round veya Floor fonksiyonları yetecektir.

Kod: Tümünü seç

Sayı:=Ceil(-13.8); // Sayı= -13 olur.
Sayı:=Ceil(13.8);  // Sayı=14 olur.
Sayı:=Ceil(-13.0);   // Sayı= -13 olur.

Sayı:=Floor(-13.8); // Sayı= -13 olur.
Sayı:=Floor(13.8);  // Sayı=13 olur.
Sayı:=Floor(-13.0);   // Sayı= -13 olur.

Sayı:=Round(12.75);  // Sayı=13 olur.
Sayının doğrudan tam sayı kısmını almak isterseniz Tunc veya Int fonksiyonlarını kullanabilirsiniz.

Kod: Tümünü seç

Sayı:=Trunc(13.75); // Sayı=13 olur.
Sayı:=Int(13.75); // Sayı=13 olur.
Dostk yazdı:Selam.

Elimde iki farklı sayı var biri tam diğeri ondalıklı sayı, noktadan sonrasını nasıl atabilirim, nokta bazen 1.7 gibi de oluyor...

if '3' <= '13.250' then
Fakat yukarıdaki kod yapısında string bir karşılaştırma yapmışız. Kullanmış olduğunuz tek tırnak ( ' ) işareti sayısal bir karşılaştırma yapmayacaktır.
Olması gereken;

Kod: Tümünü seç

 if 3 <= Ceil(13.250) then
Veya

Kod: Tümünü seç

 if 3 <= Trunc(13.250) then
Not: Yukarıdaki matematiksel fonksiyonları kullanabilmek için Uses bölümüne System.Math referansını ekleyin.

İyi geceler...
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: İki faklı sayı

Mesaj gönderen Dostk »

Selamlar; İş yoğunluğundan bir süre foruma giriş yapamadım, bugün biraz fırsat bulabildim.

Sayın fesiharslan resmen bu sorun kabusum oldu, web site üzerinden tüm verileri string olarak alıyorum.

Kod: Tümünü seç

     
     if BugununTarihi = SonEklenenBilgiler.Tarih then
                  begin
                    Yenikayitvarsabildir(SonEklenenBilgiler.Fiyati); // Örnek: 13.75

Kod: Tümünü seç

function Yenikayitvarsabildir(Number: String): Real;
begin
  Form1.Button2.Text := IntToStr(Trunc(Number)); // Bir türlü 13.75'i 13 olarak alamıyorum
end;
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: İki faklı sayı

Mesaj gönderen fesiharslan »

Merhaba;
FormatSettings record tipi ile tüm yerel sistem formatlarını biçimlendirebilirsiniz.
FormatSettings'i kullanabilmek için Uses bölümüne SysUtils referansını eklemeniz gerekiyor.

Kod: Tümünü seç

Uses 
 System.SysUtils;

Kod: Tümünü seç

function Yenikayitvarsabildir(Number: String): Real;
var 
  Sayi: Real;
begin
  FormatSettings.DecimalSeparator := '.';
  Sayi:=StrToFloat(Number);
  FormatSettings.DecimalSeparator := ',';
  Result:= Sayi;
end;
Kullanımı:

Kod: Tümünü seç

Form1.Button2.Text := IntToStr(Trunc(Yenikayitvarsabildir(SonEklenenBilgiler.Fiyati)));
Not: Sayıyı yuvarlayarak almak isterseniz, Trunc fonksiyonu yerine Round fonksiyonunu kullanın.
İyi çalışmalar...
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: İki faklı sayı

Mesaj gönderen Dostk »

Çok teşekkürler fesiharslan bey..
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: İki faklı sayı

Mesaj gönderen hido »

Selam;

Ondalıklı sayıdan noktadan sonra ki sayıları atmak istiyorum, tek alan olunca sorun yok fakat birden fazla alandan bir türlü atamadım, function bu işlemi nasıl yaptırabilirim?



Kod: Tümünü seç

function Kontrol(Number, Number2: String): Real;
var
  Satis, Satis2: Real;
begin
  FormatSettings.DecimalSeparator := '.';
  Satis:= StrToFloat(Number);
  FormatSettings.DecimalSeparator := ',';
  Result := Satis;

  FormatSettings.DecimalSeparator := '.';
  Satis2:= StrToFloat(Number2);
  FormatSettings.DecimalSeparator := ',';
  Result := Satis2;

  Showmessage(IntToStr(Trunc(Satis)));
  Showmessage(IntToStr(Trunc(Satis2)));
end;
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: İki faklı sayı

Mesaj gönderen fesiharslan »

hido yazdı:Selam;

Ondalıklı sayıdan noktadan sonra ki sayıları atmak istiyorum, tek alan olunca sorun yok fakat birden fazla alandan bir türlü atamadım, function bu işlemi nasıl yaptırabilirim?



Kod: Tümünü seç

function Kontrol(Number, Number2: String): Real;
var
  Satis, Satis2: Real;
begin
  FormatSettings.DecimalSeparator := '.';
  Satis:= StrToFloat(Number);
  FormatSettings.DecimalSeparator := ',';
  Result := Satis;

  FormatSettings.DecimalSeparator := '.';
  Satis2:= StrToFloat(Number2);
  FormatSettings.DecimalSeparator := ',';
  Result := Satis2;

  Showmessage(IntToStr(Trunc(Satis)));
  Showmessage(IntToStr(Trunc(Satis2)));
end;
Merhaba;
Aşağıdaki gibi kullanabilirsiniz.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  Satis, Satis2: Real;
begin
  FormatSettings.DecimalSeparator := ',';
  Satis := 102.55;
  Satis2 := 510.99;
  Showmessage(IntToStr(Trunc(Satis))); //Sonuç=102
  Showmessage(IntToStr(Trunc(Satis2))); //Sonuç=510
end;
İyi çalışmalar...
Cevapla