Skip to main content

CPU düzeyinde hesaplama - Binary Floating Point hatasi

Bilgisayar dilinde binary sistemi kullanıldığından ne yazık ki 0.1, 0.2, 0.3 gibi sayılar tam değer olarak gösterilememektedir. 
Bu yüzden kod derlenirken/çalıştırılırken 0.1 gibi değerler, bu sayıya en yakın değere round edilir.

ÖRN: 0.1=0.00011001100110011001100110011001100110011001100110011001100110... veya 
0.3  = 0.01001100110011001100110011001100110011001100110011001100110011... şeklinde gösterilmektedir.
  
Yukarıdaki örneklerde görüldüğü üzere Round edilme kısmında küçük de olsa rounding error denilen bir kayıp yaşanıyor.  

Diğer taraftan ondalık sayı sisteminde 1/3 olarak belirtilen bir sayı 0.33 olacak diye kabul edelim, 0.33+0.33+0.33 toplamı ne yazık ki tam istenen sonucu vermiyor(1 eklenmediği sürece).

1/3 = 0.3333333... şeklinde de kabul edilebilir; fakat bilgisayar ortamında kullanılan alanın (memory) sınırlı olmasından dolayı, virgülden sonraki kesirli değerlerin bir yerde durdurulması gerekmektedir. Çoğu  hesaplamada çok küçük bir kayıp yaşatacak olan 17. satırdan sonraki değerin pek bir önemi olmuyor(değer tam olmadığı için). (Genellikle floating pointte virgül sonrası ilk 17 değer alınıyor)

CPU düzeyinde yapılan hesaplamarda 0.1 + 0.2 =  0.3 olamamaktadır.

ÖRN: 0.1 + 0.2 =  0.30000000000000004441 şeklinde bir sonuc vermektedir.


(Tabloya atılan kayıtlarda 74,75 olması gerekirken, 74,749999999... şeklinde kayıtların olması buna güzel bir örnek olabilir)

CPU (hardware) düzeyinde yapılan hesaplamalrda decimal -> binary veya binary sayı dizisinden -> ondalık (decimal) sayı dizisine çevirme işlemlerinde yaşanan bu kayıpları önlemek için Binary Floating Point (BFP) formatında IEEE standardı belirlenmiştir.
Binary floating point sayıları hardware ve bütün programlama dillerinde aynı formatta kullanılıyor, buna da IEEE 754 standardı adı verilmiş. Bu formatın CPU düzeyinde 32 ve 64 bit için farklı değer aralığı mevcut.

Örnek Kotlin Kodu:



CPU düzeyinde yapılan hesaplamalarda  0.1 + 0.3 değeri tam olarak 0.4 değildir ama bu değere çok yakındır. Çoğu programlama dili (IEEE 754 standardından dolayı) bu değeri floating point yerine 0.4 olarak formatlayacak şekilde göstermektedir.


Peki, bu problemi yaşamamak için neler yapılabilir?


 - Para gibi net değerler için DECIMAL data types kullanılabilir. (seedecimal data type
  NUMERIC(M,N)
  DECIMAL(M,N)

- Virgülden sonra bir sürü sayı görmemek için: sonuç değeri istenen formatta ROUND edilebilir
  ROUND()
  TRUNC()

- Eğer kullanılan sisteminde decimal data types yoksa o zaman bir diğer alternatif olarak INTEGER type ile çalışılabilir(see: integer data types)


Refrences:
http://grouper.ieee.org/groups/754/
https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
https://docs.python.org/2/tutorial/floatingpoint.html#representation-error

Comments

  1. GET ACCESS TO ANY CELLPHONE REMOTELY

    HACK ANY WHATSAPP ACCOUNT

    HACK ANY INSTAGRAM ACCOUNT

    HACK ANY FACEBOOK ACCOUNT

    Using SS7

    GET ALL MONEY ADDERS SOFTWARE HERE WITH PROOF

    PAYPAL MONEY ADDER

    PAYONEER MONEY ADDER

    BITCOIN MONEY ADDER

    SKRILL MONEY ADDER

    Western Union bug

    NETELLER ADDER

    DEBIT CARD LOADER

    BANK ACCOUNT LOADER

    CREDIT CARD LOADER

    CLONE CARDS

    HACK ANY GMAIL ACCOUNT

    LinkedIn email and password hacking

    SS7 SOFTWARE AVAILABLE

    Serious inquiries only

    contact me : putro9111@gmail.com

    Telegram: https://t.me/Hackord247

    Phone: +1 (912) 805-7496

    https://makemoneywithputro.wordpress.com

    ReplyDelete
  2. SUPER BIG PROMO DI SITUS SAHABAT KARTU
    =============================================
    Hai Teman - Teman Smuanya, Yang Hobi Bermain Judi Online
    Anda Merasa Capek, DEPOSIT Teruss..Tapi Tidak Pernah Withdraw ?
    =============================================
    Nikmati Seluruh Game Berkualitas & Raih Kemenangan Anda Di SAHABAT KARTU!!
    Game Yang di Hadirkan SAHABAT KARTU Yaitu :
    * Poker Online
    * BandarQ
    * Domino99
    * Bandar Sakong
    * Sakong
    * BANDAR66
    * AduQ
    * Sakong
    * Perang Baccarat
    * Perang Dadu
    * BDQQ ( New Game )

    ==========================================
    SPECIAL PROMO KHUSUS MEMBER SETIA SAHABAT KARTU
    - Minimal DP & WD Cuma Rp. 20.000
    - BONUS CASHBACK 0.5% ( Setiap Hari Senin )
    - REFERRAL 20% ( Seumur Hidup )
    - 100% NON ROBOT & 100% TANPA ADMIN BERMAIN
    - 100% GAMPANG MENANG
    - JACKPOT HARIAN HINGGA JUTA RUPIAH
    - MENERIMA DEPOSIT VIA PULSA TSEL
    ======================================
    AKSES KAMI DI LINK RESMI :

    => skartupkv.org


    =====================
    * Livechat : SAHABAT KARTU
    * LINE : Cs_sahabatkartu
    * Whatsapp : +855886427216

    Sahabatkartu: Situs Poker Online, DominoQQ, Domino99, BandarQ Terpercaya

    ReplyDelete
  3. sdominohoki.info Merupakan Salah Satu Situs yang terpercaya Di Indonesia
    dominowin99 Memiliki Permainan Yang Mudah Dimainkan & 100% Mudah Menang Lohh..
    Cukup Dengan 1 USER ID Anda Bisa Bermain 11 GAME Berkualitas :
    * Poker
    * Domino99
    * AduQ
    * Capsa Susun
    * Sakong
    * Bandar Poker
    * BANDARQ ONLINE
    * BANDAR66 ONLINE
    * Perang Baccarat
    * Perang Dadu
    * BDQQ ( New Game )
    +++++++++++++++++++++++++++++++
    AKSES LINK ALTERNATIF TERBARU :
    - sdominohoki.net

    < Contact Us >
    Info Lebih Lanjut Hubungi :
    W.A : +855974599065


    Sahabatdomino : Situs QQ Online, Agen Domino99 dan BandarQ Online Terbesar Di Asia

    ReplyDelete

Post a Comment

Popular posts from this blog

Simply Hacking Facebook Account with Kali Linux

Hi guys, today I will show you how to hack a Facebook account with  Kali Linux.

Vodafone'da Sms Gönderimi için Bakiyeniz Yetersizdir Sorunu Çözüldü

Vodafone'nun sms gönderimi için bakiyeniz yetersizdir Sorunu Çözüldü!.

EXCELde Belli Satirlari ya da Sütunları Dondurmak, Sabitlemek

Excel'de önemli gördüğümüz üst satır -başlık- kısmını veya sol sutunu sabit tutmak, her sayfada görünmesini sağlamak artık çok kolay.

How to Hack WhatsApp Account Bluestack

How to hack WhatsApp account??? WhatsApp is currently one of the most secure messaging services purely because it works with a particular phone number and requires a certain code.

Windows Mavi Ekran (Critical Structure Corruption) Hatası

Resimdeki gibi mavi ekran hatası yada dondurma kodu alırsanız, bilgisayarınız veri kaybını önlemek için kendini aniden kapatır. Herhangi bir donanımsal aygıt yada bu aygıtlarla ilgili bir yazılım hataya neden olabilir. Bu aynı zamanda sistemin, geçersiz bir belleğe işaret ettiğini de gösterir. Bunun gibi sinir bozucu mavi ekran hatasından kurtulmak için şu yolları denemenizi tavsiye ederim. Bütün harici aygıt sürücülerinizi kaldırarak işe yarayıp yaramadığını kontrol edebilirsiniz.(fare ve klavye hariç.) Ayrıca bilgisayar üreticinizin ana sayfasına girip bilgisayarınız için en güncel yazılım sürücülerini indirebilirsiniz. Ek olarak sürücü yazılımlarınızı da güncellemenizi tavsiye ederim. Bilgisayarınızı Safe Mode(güvenli mod)'da açın:   Bilgisayarınızı yeniden başlattıktan sonra güvenli modda açın. Güvenli modda açtıktan sonra aynı hatayı alıp almadığınızı kontrol edin.Eğer hata devam ediyorsa Clean boot(temiz başlatma) işlemi yapmanız gerekiyor.Temiz başlatma(clean boot