[英]Value difference when converting from double(float64) to float(float32) in numpy
當我運行簡單代碼時:
a = np.float64([20269207])
b = np.float32(a)
output 變成
a = array([20269207.])
b = array([20269208.], dtype=float32)
是什么原因導致了這種轉換前后的差異? 在什么情況下輸出會有所不同?
無法以float32
( IEEE 754 ) 格式存儲值20269207
。
您可能會看到,為什么:
可以存儲值20269206
和20269208
; 它們以二進制形式表示是(參見IEEE-754 浮點轉換器):
01001011100110101010010001001011
為20269206
01001011100110101010010001001100
為20269208
它們的二進制 forms 相差1
,因此20269206
和20269208
之間的任何數字都沒有位置。
根據IEEE 754的“四舍五入,接近偶數”和“四舍五入,遠離零”的四舍五入規則,您的數字將四舍五入到最接近的甚至更高的數字,即數字20269208
。
integer 數字的輸出將不同:
16,777,216
的奇數,33,554,432
的幾乎所有數字。筆記:
2^24
,第二個是2^25
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.