我知道一個float包含大量的數字和一些基數的指數,通常是十個。所以任何經過有效數字的東西都不準確,因爲什麼都沒有,但是當把一個float轉換爲int(或long)時,會出現虛假數字。將float轉換爲int時,尾部數字來自哪裏?
這裏有一個Python的例子:
>>> int(1e308)
100000000000000001097906362944045541740492309677311846336810682903157585404911491537163328978494688899061249669721172515611590283743140088328307009198146046031271664502933027185697489699588559043338384466165001178426897626212945177628091195786707458122783970171784415105291802893207873272974885715430223118336L
他們似乎並不一遍又一遍給定的值相同何時改變,所以它可能不是完全隨機的或從存儲器中的神祕斑點拉。這些隨機數字來自哪裏?究竟產生這些尾隨數字究竟發生了什麼?爲什麼轉換不會簡單地將隨機數字設置爲零?