C# Faktöriye Alma Ve Decimal Veri Tipi Sorunu
-
Decimal ve hataya düşen kodlar;
https://paste.ubuntu.com/p/K6C246kCHg/
Double hatasız çalışıyor;
https://paste.ubuntu.com/p/qRhbhXn46x/
3-5 gibi değerlerde sorunsuz çalışıyor decimal ile ancak 40 değeri girildiğinde program hataya düşüyor şu haliyle.
Veri tiplerini double dönüştürünce sorunsuz çalışıyor. Ancak decimal'de iken program "OverflowException" hatasına düşüyor. Sebebi nedir. Decimal veri tipi double'dan çok daha büyük değil mi?
Https tarafından 31/Tem/19 22:49 tarihinde düzenlenmiştir -
Https bunu yazdı
Decimal ve hataya düşen kodlar;
https://paste.ubuntu.com/p/K6C246kCHg/
Double hatasız çalışıyor;
https://paste.ubuntu.com/p/qRhbhXn46x/
3-5 gibi değerlerde sorunsuz çalışıyor decimal ile ancak 40 değeri girildiğinde program hataya düşüyor şu haliyle.
Veri tiplerini double dönüştürünce sorunsuz çalışıyor. Ancak decimal'de iken program "OverflowException" hatasına düşüyor. Sebebi nedir. Decimal veri tipi double'dan çok daha büyük değil mi?
Tam olarak öyle değil. Decimal'in amacı daha hassas hesaplamalarda kullanılmak olduğundan range'i double'a göre daha düşük.
"Because the
decimal
type has more precision and a smaller range than bothfloat
anddouble
, it's appropriate for financial and monetary calculations."C# type/keyword Approximate range Precision .NET type float
±1.5 x 10−45 to ±3.4 x 1038 ~6-9 digits System.Single double
±5.0 × 10−324 to ±1.7 × 10308 ~15-17 digits System.Double decimal
±1.0 x 10-28 to ±7.9228 x 1028 28-29 digits System.Decimal -
Bu tür işler için recursion daha temiz yöntem. Gerçi her türlü yöntem goto kullanmaktan iyidir. Bi incele istersen hocam.
-
JPriest bunu yazdı
Bu tür işler için recursion daha temiz yöntem. Gerçi her türlü yöntem goto kullanmaktan iyidir. Bi incele istersen hocam.
recusive gerek yokki iteratif olarak da alabilir go to yerine ?
-
Çoktandır uğraşmıyorum ama DECİMAL ile DOUBLE farklı şeylerin "ayarı"..
büyük haneli sayılarla işlem yaparken değişik alt yordamlar kullanılıyor örnek pi sayısının 14534. basamaklı hali nedir yada hali nedir gibi..40! de zaten çok haneli bir sayı olduğu için hata veriyordur...
8.159.. E47
48 (desimal) basamaklı bir sayı kaç byte ile tutulur
Matematik ve Mühendislik.. kahretsin yine karşınıza çıktı..
-
JPriest bunu yazdı
Bu tür işler için recursion daha temiz yöntem. Gerçi her türlü yöntem goto kullanmaktan iyidir. Bi incele istersen hocam.
Goto konusuna katiliyorum da, iteratif bir sekilde yazilinca anlasiliyor ise bir kodu recursive yazmanin alemi yok. Sonucta araya bir katman daha eklemis oluyoruz. Sonucta bilgisayar iteratif calisan bir sistem :)
-
NmC bunu yazdıJPriest bunu yazdı
Bu tür işler için recursion daha temiz yöntem. Gerçi her türlü yöntem goto kullanmaktan iyidir. Bi incele istersen hocam.
Goto konusuna katiliyorum da, iteratif bir sekilde yazilinca anlasiliyor ise bir kodu recursive yazmanin alemi yok. Sonucta araya bir katman daha eklemis oluyoruz. Sonucta bilgisayar iteratif calisan bir sistem :)
Arasıra mezarından çıkıp geliyon ha sende :D
-
Https bunu yazdı
Decimal ve hataya düşen kodlar;
https://paste.ubuntu.com/p/K6C246kCHg/
Double hatasız çalışıyor;
https://paste.ubuntu.com/p/qRhbhXn46x/
3-5 gibi değerlerde sorunsuz çalışıyor decimal ile ancak 40 değeri girildiğinde program hataya düşüyor şu haliyle.
Veri tiplerini double dönüştürünce sorunsuz çalışıyor. Ancak decimal'de iken program "OverflowException" hatasına düşüyor. Sebebi nedir. Decimal veri tipi double'dan çok daha büyük değil mi?
Değil hocam. Sayıların piri double. Zaten aldığın hata aşırı yük hatası. Double, decimal dan daha büyük rakamları taşır. Hatta float bile decimal dan daha fazla taşır.
-
Yazilimci bunu yazdıHttps bunu yazdı
Decimal ve hataya düşen kodlar;
https://paste.ubuntu.com/p/K6C246kCHg/
Double hatasız çalışıyor;
https://paste.ubuntu.com/p/qRhbhXn46x/
3-5 gibi değerlerde sorunsuz çalışıyor decimal ile ancak 40 değeri girildiğinde program hataya düşüyor şu haliyle.
Veri tiplerini double dönüştürünce sorunsuz çalışıyor. Ancak decimal'de iken program "OverflowException" hatasına düşüyor. Sebebi nedir. Decimal veri tipi double'dan çok daha büyük değil mi?
Değil hocam. Sayıların piri double. Zaten aldığın hata aşırı yük hatası. Double, decimal dan daha büyük rakamları taşır. Hatta float bile decimal dan daha fazla taşır.
decimal stack'te bulunur ve 128 bit yer kaplar stack'te tutulan veri tipleri arasında en büyüğüdür denilince ve double 64 bit, float 32 bit diye kıyaslayınca bende ramde fazla yer kaplayan daha büyüktür diye düşündüm. Sanırım Decimal'de 128 bitin büyük kısmı ilgili sayının küsuratını tutuyor fakat tam kısım double ve float'a göre küçük kalıyor.
-
MhmdAlmz bunu yazdıNmC bunu yazdıJPriest bunu yazdı
Bu tür işler için recursion daha temiz yöntem. Gerçi her türlü yöntem goto kullanmaktan iyidir. Bi incele istersen hocam.
Goto konusuna katiliyorum da, iteratif bir sekilde yazilinca anlasiliyor ise bir kodu recursive yazmanin alemi yok. Sonucta araya bir katman daha eklemis oluyoruz. Sonucta bilgisayar iteratif calisan bir sistem :)
Arasıra mezarından çıkıp geliyon ha sende :D
Yok hep buralardayim da, yazmaya useniyorum :) Is guc firsat olmuyor :P