13*3 == 1.0 ?
作者:由 桂子 發表于 寵物時間:2022-10-21
我一直以為程式語言在處理這個式子結果會為 0。999999999999999 實際上 java rust python julia js 都執行這一行時,結果都是 1
其中 python 的 float 實際是 64 位的 double,並沒有預設型別的32位浮點,通常是 numpy 的 32 位浮點,但是意外發生了:
numpy float32 誤差
而同樣為資料科學語言的 julia 在這方面比較嚴謹
julia float32/64 正常
數學上嚴謹是應該的,有時這些誤差甚至認為是合理的,因為水至清則無魚。
在統計學上,表示誤差的還有很多術語:方差、標準差、T檢測等
其中,標準差是方差的平方根,我一直在說像很多商品標識誤差範圍 ±5 中的5是不是標準差
T檢測據說多用於少樣本(30樣本以內),我就簡單驗證了一下,樣本數大致在 25~100 之間比較合適
既然現實世界裡,誤差是合理的,那麼是否認為,接近正確就是正確?這樣就引申到一個較為爭議的話題:
接近正確是正確嗎?接近完美是完美嗎?
話題有一個小段子,說幼兒園老師問:蜘蛛有幾條腿?回答對了有獎勵,可小朋友都說錯了,並且有一個人還說有7條腿,最後老師把獎勵給了7條腿的小孩,理由是他的答案最接近8條腿。所以,接近正確的答案是正確嗎?
再引申,假設說要成為總統的條件就是工滿足『8條腿』,但是沒有人滿足得了,難道就不選總統了麼?
網路上,經常聽到,四捨五入,我就達標了等等,實際上就是說,接近完美,四捨五入後就是完美。
這真是一個有意思的爭議。