Merhabalar..
Matematiksel işlemler yapıyorum programım ile. Ancak değişkenin sınırı dışındaki sayıları hesaplamakta sorun yaşıyorum. Hesap makinelerinde falan E19 yada benzer ifadeler görüyorum. Ne oldukları hakkında pek fikrim yok ancak yapmak istediğim; belli bir değerden sonra ifadeyi a,bcd*10^x cinsinden göstermek. Değişken olarak variant kullanıyorum, ancak longint veya extended tipine de döndürebilirim. Bir fikriniz varsa yardım bekliyorum.. Teşekkürler..
Değişkenlerde sınır aşımı sorunu :?:
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Değişkenlerde sınır aşımı sorunu :?:
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Değişkenlerde sınır aşımı sorunu :?:
E19 zaten 10^x oluyor.
Re: Değişkenlerde sınır aşımı sorunu :?:
hımm.. Peki, örneğin 16777216 sayısı 2'nin 24. kuvvetidir. Bu sayıyı nasıl 2^24 diye gösterebilirim acaba?
Ayrıca E'nin kullanımı hakkında biraz daha geniş bilgi verebilir misiniz?
Ayrıca E'nin kullanımı hakkında biraz daha geniş bilgi verebilir misiniz?
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Değişkenlerde sınır aşımı sorunu :?:
E bilimsel gösterim diye geçer.
http://en.wikipedia.org/wiki/Scientific_notation
Delphide bunu kullanmak için floatstr yi kullanabilirsin.
http://www.delphibasics.co.uk/RTL.asp?Name=FloatToStrF
http://en.wikipedia.org/wiki/Scientific_notation
Delphide bunu kullanmak için floatstr yi kullanabilirsin.
http://www.delphibasics.co.uk/RTL.asp?Name=FloatToStrF
Re: Değişkenlerde sınır aşımı sorunu :?:
+Anladım hocam saolun verdiğiniz bilgiler için. Double tipindeki değişkene yeterince büyük sayı girdiğinde (15 basamaktan büyük) otomatik olarak düzenliyor kendini. Teşekkür ediyorum.
+İnternette bir çok yerde 2^8 sayısını 256 ya çevirmeyi gösteriyor ancak tam tersi fonksiyonu bulamadım.. Kendim mi yazmalıyım? Şuan hazırlamaya çalıştığım programda zaten bütün fonksiyonları kendim yazdım(determinant hariç
) Üşendiğimden değil ancak bana hız kazandıracağını düşünüyorum bu şekilde.. 
+İnternette bir çok yerde 2^8 sayısını 256 ya çevirmeyi gösteriyor ancak tam tersi fonksiyonu bulamadım.. Kendim mi yazmalıyım? Şuan hazırlamaya çalıştığım programda zaten bütün fonksiyonları kendim yazdım(determinant hariç


Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Değişkenlerde sınır aşımı sorunu :?:
2^8 için 256 geçerlidir, ama mesela 230 için 2^? gibi bir sayı bulamazsın. O nedenle genelde basit shift ifadelerini kullanman gerekebilir.
256 = (1 shl 8 ) olarak düşünebilirsin.
Kullanım
256 = (1 shl 8 ) olarak düşünebilirsin.
Kod: Tümünü seç
function ikiussu(sayi: integer):integer;
var
i : integer;
begin
result:=-1;
for i:=0 to 31 do
if (sayi = (1 shl i)) then
begin
result:=i;
break;
end;
end;
Kod: Tümünü seç
k:=256;
z:=ikiussu(k);
if z > -1 then showmessage(k+ ' = 2 ussu '+z)
else showmessage(k+' sayısı için 2 üssü x degeri yoktur.');
Re: Değişkenlerde sınır aşımı sorunu :?:
Kusura bakmayın bir süre yoktum..
aradığım kod buydu. Anlatamadım ama yaptım..
saolun yardımlarınız için
Kod: Tümünü seç
procedure asalcarpan(s:integer);
var
i:integer;
begin
form1.ListBox1.Clear;
i:=2;
if s=1 then
begin
form1.ListBox1.items.Add('1');
exit;
end;
while i<=round(s) do
begin
if (s mod i=0) then
begin
form1.listbox1.items.add(inttostr(i));
s:=round(s/i);
end
else
i:=i+1;
end;
end;

Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'