21-12-2016, Saat: 15:55
21-12-2016, Saat: 16:31
(21-12-2016, Saat: 15:55)esrehmaan Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar
Arkadaşlar MSSQL hakkında merak ettiğiniz her türlü sorunuzu alabilirim. Elimden geldiğince sizlere yardımcı olmaya çalışacağım
MySQL ile ne farkı var en ayırıcı özelliği nedir, hangi duruma göre hangisini seçelim.
22-12-2016, Saat: 02:54
Delphi de (TAM SAYI / TAM SAYI) ondalık sonuç döndürebiliyor..
MSSQL neden bunu yapamıyor ?
Dipçe; 1 saatimi yemişti bu saçmalık..
MSSQL neden bunu yapamıyor ?
Dipçe; 1 saatimi yemişti bu saçmalık..
22-12-2016, Saat: 08:36
(22-12-2016, Saat: 02:54)barutali Adlı Kullanıcıdan Alıntı: [ -> ]Delphi de (TAM SAYI / TAM SAYI) ondalık sonuç döndürebiliyor..
MSSQL neden bunu yapamıyor ?
Dipçe; 1 saatimi yemişti bu saçmalık..
(TAM SAYI / TAM SAYI) örnek; 5/3=1,66666667 bu bir matematik kuralıdır.
MSSQL neden bunu yapamıyor ? Bilimsel kurallar Microsoft'u pek bağlamıyor. Kendi kurallarını koyuyor.
Bu arada Türkçe kullanım hassasiyetinizden dolayı tebrik ederim. (Dipçe;)
22-12-2016, Saat: 16:01
(22-12-2016, Saat: 08:36)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ](22-12-2016, Saat: 02:54)barutali Adlı Kullanıcıdan Alıntı: [ -> ]Delphi de (TAM SAYI / TAM SAYI) ondalık sonuç döndürebiliyor..
MSSQL neden bunu yapamıyor ?
Dipçe; 1 saatimi yemişti bu saçmalık..
(TAM SAYI / TAM SAYI) örnek; 5/3=1,66666667 bu bir matematik kuralıdır.
MSSQL neden bunu yapamıyor ? Bilimsel kurallar Microsoft'u pek bağlamıyor. Kendi kurallarını koyuyor.
Bu arada Türkçe kullanım hassasiyetinizden dolayı tebrik ederim. (Dipçe;)
Merhaba,
TAM SAYI / TAM SAYI işleminin sonucu TAM SAYI'dır. Bu aslında bilimsel olarak da böyledir. Tam sayılar kümesinde yapılan işlemlerin hepsinin sonucu tam sayıdır. Eğer sonuç noktalı sayı olursa (FLOAT, DOUBLE, DECIMAL vs) derleyici sizin yerinize veri tipi değiştirmiş demektir. Veri tipi değiştirme, optimizasyon gibi sonucu değiştirmeyen bir işlem değildir ve hatta tam tersi programı yavaşlatan bir değişikliktir.
İyi çalışmalar
22-12-2016, Saat: 22:08
(22-12-2016, Saat: 16:01)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: [ -> ](22-12-2016, Saat: 08:36)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ](TAM SAYI / TAM SAYI) örnek; 5/3=1,66666667 bu bir matematik kuralıdır.
MSSQL neden bunu yapamıyor ? Bilimsel kurallar Microsoft'u pek bağlamıyor. Kendi kurallarını koyuyor.
Bu arada Türkçe kullanım hassasiyetinizden dolayı tebrik ederim. (Dipçe;)
Merhaba,
TAM SAYI / TAM SAYI işleminin sonucu TAM SAYI'dır. Bu aslında bilimsel olarak da böyledir. Tam sayılar kümesinde yapılan işlemlerin hepsinin sonucu tam sayıdır. Eğer sonuç noktalı sayı olursa (FLOAT, DOUBLE, DECIMAL vs) derleyici sizin yerinize veri tipi değiştirmiş demektir. Veri tipi değiştirme, optimizasyon gibi sonucu değiştirmeyen bir işlem değildir ve hatta tam tersi programı yavaşlatan bir değişikliktir.
İyi çalışmalar
Açıkçası bu dediğiniz bilimsel gerçeği hiç duymadım..
Float, Double ve Decimal de yavaşlatma hiç yaşamadım fakat Currency de yavaşlama görmüştüm.. Özellikle CurrtoStr ve StrToCurr da ..
22-12-2016, Saat: 22:37
İşlemci komut bazında integer, float, double fark var. Bu veritabanında hıza ne kadar yansır?
22-12-2016, Saat: 22:45
Bahse konu bölme işlemindeki davranış aslında C dilinin davranışı.
x = y / z gibi bir matematiksel işlemde, x değişkeninin türü ne olur ise olsun; y ve z'nin bir tamsayı olması durumunda sonuç da tamsayı olacaktır. y ya da z değişkenlerinden birisi dahi gerçel sayı ise bu durumda sonuç ondalıklı olacaktır. Sonucun y ve z'nin tipinden bağımsız olarak, ondalıklı çıkmasını garanti altına almak istiyor iseniz; CAST ya da CONVERT metodlarını kullanabilirsiniz. Örneğin;
ya da daha basit bir şekilde aşağıdaki gibi bir kullanım da işe yarayacaktır:
x = y / z gibi bir matematiksel işlemde, x değişkeninin türü ne olur ise olsun; y ve z'nin bir tamsayı olması durumunda sonuç da tamsayı olacaktır. y ya da z değişkenlerinden birisi dahi gerçel sayı ise bu durumda sonuç ondalıklı olacaktır. Sonucun y ve z'nin tipinden bağımsız olarak, ondalıklı çıkmasını garanti altına almak istiyor iseniz; CAST ya da CONVERT metodlarını kullanabilirsiniz. Örneğin;
declare @x float, @y int, @z int set @y = 1 set @z = 4 set @x = cast(@y as float) / cast(@z as float) select @x
ya da daha basit bir şekilde aşağıdaki gibi bir kullanım da işe yarayacaktır:
declare @x float, @y int, @z int set @y = 1 set @z = 4 set @x = (@y * 1.0 / @z * 1.0) select @x
22-12-2016, Saat: 23:01
(22-12-2016, Saat: 22:45)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: [ -> ]Bahse konu bölme işlemindeki davranış aslında C dilinin davranışı.
x = y / z gibi bir matematiksel işlemde, x değişkeninin türü ne olur ise olsun; y ve z'nin bir tamsayı olması durumunda sonuç da tamsayı olacaktır. y ya da z değişkenlerinden birisi dahi gerçel sayı ise bu durumda sonuç ondalıklı olacaktır. Sonucun y ve z'nin tipinden bağımsız olarak, ondalıklı çıkmasını garanti altına almak istiyor iseniz; CAST ya da CONVERT metodlarını kullanabilirsiniz. Örneğin;
declare @x float, @y int, @z int set @y = 1 set @z = 4 set @x = cast(@y as float) / cast(@z as float) select @x
ya da daha basit bir şekilde aşağıdaki gibi bir kullanım da işe yarayacaktır:
declare @x float, @y int, @z int set @y = 1 set @z = 4 set @x = (@y * 1.0 / @z * 1.0) select @x
2. kullanım şekli ile çözmüştüm.. Peki hocam sizce Delphi' ın yaptığı mı doğru? Yoksa C nin mi ?
23-12-2016, Saat: 01:34
Ben bir Delphi sever olarak Delphi'nin yaptığı doğru demek isterdim. Ama mantıken baktığımızda, iki değişken (bölen ve bölünen) birer tamsayı ise bu durumda programcı tamsayı bir sonuç istiyordur diye düşünmek de bir yaklaşım aksini düşünmek de. Delphi akıllıca davranıp, her zaman altta programcıları yormayıp bir çok işi kendisi hallediyor. Ondalıklı sayı aritmetiği CPU için biraz zor bir aritmetiktir, bu bağlamda programcı bilerek ve isteyerek bu işi yapmıyacak ise bu işin default'unun C'nin yaptığı gibi olması gerekir kanaatini taşıyorum. Matematiksel olarak sonuc 1/4 için 0.25'dir evet ama 1 ve 4 birer tamsayı olarak tanımlandı ise performans adına sonucun 0 olması gerekir. Programcı ondalıklı sonuçlar arzuluyor ise her iki tarafıda ondalıklı bir veri tipi ile sarmalamalıdır ki derleyici en başta ilgili optimizasyonları yapabilsin.
Ama Delphi bu, arka planda bütün pis işleri bizim için hallediverir
C/C++ gibi değil
C/C++'da bu iş için casting yapmanız icap eder. Doğrusu hangisi peki ? Bu sorunun yanıtı su götürür. İşlemci performansı için doğrusu C/C++'ın yaptığı gibi görünüyor.
Ama Delphi bu, arka planda bütün pis işleri bizim için hallediverir
C/C++ gibi değil
C/C++'da bu iş için casting yapmanız icap eder. Doğrusu hangisi peki ? Bu sorunun yanıtı su götürür. İşlemci performansı için doğrusu C/C++'ın yaptığı gibi görünüyor.