Decimal ile Numeric tipi arasındaki fark

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
anemos
Üye
Mesajlar: 110
Kayıt: 02 Nis 2007 07:51
Konum: Sakarya / Hendek

Decimal ile Numeric tipi arasındaki fark

Mesaj gönderen anemos »

Firebird Numeric sayıları aşağıdaki aralıklarda convert yapar. Scale değerin 0 olması
tam sayıyı, farklı olması da tam sayının 10^Scale bölümüyle küçültür.

Kod: Tümünü seç

Precision Aralığı               Çevireceği tip        Max Alabileceği Değer
-------------------------      -------------------   -----------------------
Numeric(1)  - Numeric(4)        SmallInt              16 bit = 2^15  
Numeric(5)  - Numeric(9)        Integer               32 bit = 2^31
Numeric(10) - Numeric(18)       Bigint (Int64)        64 bit = 2^63
-------------------------      -------------------    ----------------------
Örnek 1: Numeric(3,1) Smallint aralığına girer. Bu da (2^15)-1' den 32.767 dir.
Virgülden sonra 1 basamak olduğuna göre, 32.767/(10^1) = 3.276,7 Insert yapabileceğiniz
en büyük değerdir.

Örnek 2: Numeric(3,2) Smallint aralığına girer. Bu da (2^15)-1' den 32.767 dir.
Virgülden sonra 2 basamak olduğuna göre, 32.767/(10^2) = 327,67 Insert yapabileceğiniz
en büyük değerdir.

Örnek 3: Numeric(5,1) Integer aralığına girer. Bu da (2^31)-1' den 2.147.483.647 dir.
Virgülden sonra 1 basamak olduğuna göre, 2.147.483.647/(10^1) = 214.748.364,7 Insert
yapabileceğiniz en büyük değerdir.

Örnek 4: Numeric(8,1) Integer aralığına girer. Bu da (2^31)-1' den 2.147.483.647 dir.
Virgülden sonra 1 basamak olduğuna göre, 2.147.483.647/(10^1) = 214.748.364,7 Insert
yapabileceğiniz en büyük değerdir.

*** Numeric(5,1) ile Numeric(8,1) max değerleri neden aynı çıktı? ***

Her iki Scale eşittir ve aynı Precision aralığındadır.
Yani, Scale <= Precison şartıyla virgülden sonra ihtiyaç duyacağınız basamak sayısına
göre Precison ayarlanır.

Decimal veri tipinde durum:

Numeric örneklerindeki hesaplama ile aynıdır. Tek farkı, aşağıda tabloda görünen
aralıklarda convert olur.

Kod: Tümünü seç

Precision Aralığı               Çevireceği tip        Max Alabileceği Değer
-------------------------      -------------------   ----------------------- 
Decimal(1)  - Decimal(9)        Integer               32 bit = 2^31
Decimal(10) - Decimal(18)       Bigint (Int64)        64 bit = 2^63
-------------------------      -------------------    ----------------------
Cevapla