Çoğu insan iki katına çıktıklarında BigDecimal'i çığlık attığında hata yapar, aslında sorunu başka bir yere taşımışlardır. Çift, İşaret biti: 1 bit, Üs genişliği: 11 bit verir. Önemli hassasiyet: 53 bit (52 açıkça saklanır). Çifte doğası nedeniyle, tüm interger ne kadar büyük olursa göreceli doğruluğu kaybedersiniz. Burada kullandığımız göreceli doğruluğu hesaplamak için körüktür.
Hesaplamada çifte göreceli doğruluk aşağıdaki foluma kullanıyoruz 2 ^ E <= abs (X) <2 ^ (E + 1)
epsilon = 2 ^ (E-10)% 16 bit kayan nokta için (yarı duyarlık)
Accuracy Power | Accuracy -/+| Maximum Power | Max Interger Value
2^-1 | 0.5 | 2^51 | 2.2518E+15
2^-5 | 0.03125 | 2^47 | 1.40737E+14
2^-10 | 0.000976563 | 2^42 | 4.39805E+12
2^-15 | 3.05176E-05 | 2^37 | 1.37439E+11
2^-20 | 9.53674E-07 | 2^32 | 4294967296
2^-25 | 2.98023E-08 | 2^27 | 134217728
2^-30 | 9.31323E-10 | 2^22 | 4194304
2^-35 | 2.91038E-11 | 2^17 | 131072
2^-40 | 9.09495E-13 | 2^12 | 4096
2^-45 | 2.84217E-14 | 2^7 | 128
2^-50 | 8.88178E-16 | 2^2 | 4
Başka bir deyişle +/- 0,5 (veya 2 ^ -1) Doğruluk istiyorsanız, sayının olabileceği maksimum boyut 2 ^ 52'dir. Bundan büyük ve kayan nokta sayıları arasındaki mesafe 0,5'ten büyüktür.
+/- 0.0005 (yaklaşık 2 ^ -11) doğruluk istiyorsanız, sayının olabileceği maksimum boyut 2 ^ 42'dir. Bundan büyük ve kayan nokta sayıları arasındaki mesafe 0.0005'ten büyüktür.
Bundan daha iyi bir cevap veremiyorum. Kullanıcı, gerekli hesaplamayı ve birim değerini (Metre, Feet, İnç, mm, cm) yaparken ne kadar hassasiyet istediğini bulmalıdır. Vakaların büyük çoğunluğu için, simüle etmeyi amaçladığınız dünyanın ölçeğine bağlı olarak şamandıra basit simülasyonlar için yeterli olacaktır.
Söylenecek bir şey olsa da, sadece 100 metreye 100 metrelik bir dünyayı simüle etmeyi hedefliyorsanız, 2 ^ -45 civarında doğruluk sırasına sahip bir yere sahip olacaksınız. Bu, cpu'nun içindeki modern FPU'nun yerel tip boyutu dışında nasıl hesaplamalar yapacağına bile girmez ve sadece hesaplama tamamlandıktan sonra (FPU yuvarlama moduna bağlı olarak) yerel tip boyutuna yuvarlanır.