2013-03-05 13 views
5
 
log(2^32)/log(10) =~ 9.63295986126 
log(10^0.63295986126)/log(2) =~ 2.10264714605 > 2 bit 

log(2^64)/log(10) =~ 19.2659197225 
log(10^0.2659197225)/log(2) =~ 0.883366197155 < 2 bit 

Integer için 9 rakam görebildiğiniz gibi Integer türünde negatif değerlere neden olmaz.Java'da uzun veri türü (ve Hazırda Beklet) için birincil anahtarın uzunluğu?

Ama Long 19 basamaklı işareti taşması ... Ben genellikle

o Hibernate Long için haritalama NUMBER(19) sorun var mümkün mü ... Kimliği sütununda türü olarak NUMBER(18) bkz neden olabilir?

+0

Anlayamıyorum: Oracle'daki tablodaki sütunun uzunluğu, Hazırda Bekletme'den kimlikte negatif sayı kazanma olasılığını etkiler mi? – Andremoniy

+0

'log (9'999'999'999'999'999'999)/log (2) = ~ 63.1166338029' böylece bu değeri 63 bit olarak tutamazsınız (not' un 19 tane olduğunu unutmayın). Yani işaret biti kullanılacak ... Ve muhtemelen Hazırda Bekleme hatası. Bu bir soru ... – gavenkoa

+0

Tamam, bu bir cevap: işaret biti kullanılabilir. Peki soru nedir? – Andremoniy

cevap

2

Uzun kullanmayın - bu sayılara yöneliktir. PK'leri asla çoğalmaz, toplamaz, çıkarmazsınız. (muhtemelen onları asla sıralamazsınız). Oracle veri türü NUMBER için oracle.sql.NUMBER veya java.math.BigDecimal kullanın.

+0

Hm ... Asla 'Dize'yi kullanmayın çünkü bunları asla birleştirmem/aramam. Ama sen haklısın * büyük NUMBER * için java.math.BigDecimal id alanında kullanmak zorundayım! +1 – gavenkoa

İlgili konular