看板 C_Chat
作者 Wardyal (記得簽到B站漫畫)
標題 [閒聊] 工程師才懂的笑話
時間 Fri Jan 21 16:21:30 2022


剛剛看到的

https://i.imgur.com/UeBuvTy.jpg
[圖]

https://i.imgur.com/1qUWOKJ.jpg
[圖]

https://i.imgur.com/JZPY3pH.jpg
[圖]

https://i.imgur.com/hsR0C39.jpg
[圖]

所以為什麼有多0.00000004

0.1 + 0.2 不是 0.3 嗎

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.227.236 (臺灣)
※ 文章代碼(AID): #1XwcqDca (C_Chat)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1642753293.A.9A4.html
doramon888: 一加一等於多少......1F 01/21 16:22
zetarv: 笑死,浮點數的bug2F 01/21 16:22
newgunden: 表示編碼常數設定有問題3F 01/21 16:23
yankeefat: 你的浮點運算壞掉了4F 01/21 16:23

 
none049: 世界上有10種人,懂二進制的跟不懂的6F 01/21 16:23
Wardyal: 殺小7F 01/21 16:23
god78987: google的到0.1+0.28F 01/21 16:23
gcobc12632: 笑死 你可以Google一下精度損失 有滿多講解的9F 01/21 16:24
hgs1906: XDDDDD10F 01/21 16:24
a1919979:  就叫你%d中間要加數字了11F 01/21 16:24
rrraaayyy: ; ;12F 01/21 16:24
bightg30098: js吧13F 01/21 16:25
cismjmgoshr: 浮點數本身的誤差14F 01/21 16:25
pponywong: 再精確一點是 3.00000000000000044409e-0115F 01/21 16:27
[圖]
arrenwu: 表示他用的是 double float ?17F 01/21 16:27
pponywong: 浮點數是 IEEE754 規定的18F 01/21 16:27
inte629l: IEEE75419F 01/21 16:27
arrenwu: (single) float 去算出來會是 0.320F 01/21 16:28
[圖]
pponywong: single point 是 3.00000011920928955078e-0122F 01/21 16:29
s7503228: int!!!先int!!!!23F 01/21 16:29
gama: 考慮用decimal嗎24F 01/21 16:31
hey1590: 記得round啦 很多bug都是這樣來的25F 01/21 16:32
arrenwu: 這反映的是浮點數的等號沒太大意義。LeetCode上面就有問題是跟這個有關係26F 01/21 16:32
dreamnook2: js的浮點數問題 有名到被拿來當考題
最近我還有遇到空白檢查不出來的狀況-_-28F 01/21 16:32
greg90326: 午告靠北30F 01/21 16:34
teleportcat: 笑死31F 01/21 16:34
tsunamimk2: IEEE 754精度問題w32F 01/21 16:34
hey1590: 我上次就遇到數學函式的定義域傳入float 但在運算的過程就是多了後面導致error33F 01/21 16:35
tsunamimk2: 然後不要對兩個浮點數比較是否相等www35F 01/21 16:35
zjes40604: 直接宣告int啦36F 01/21 16:35
tsunamimk2: 要避免這種問題可以依照需要的精度乘以10^n
全部用整數運算 然後轉換回去之後四捨五入
不只是js 只要是IEEE754就有這問題 精度是有限的37F 01/21 16:36
arcanite: 我笑了XD40F 01/21 16:37
s7503228: 那就跟猴子被電還有買牛奶的笑話一樣
工程師在笑 其他人都不懂41F 01/21 16:38
tsunamimk2: 特別是牽扯到金錢或者科學運算的時候...43F 01/21 16:38
wei115: 幹,我居然笑了 真的有夠宅wwww44F 01/21 16:39
KJC1004: 16樓證明js就是邪教
每個坑都能讓工程師debug一整天45F 01/21 16:41
s87879961: 軟體工程師47F 01/21 16:42
aaaaooo: 這問題大概要等到量子電腦普及才有解48F 01/21 16:42
tsunamimk2: 那個 其實如果你從c開始寫 就沒差了..w
量子電腦嗎...我不認為現在的"量子"電腦能夠處理連續49F 01/21 16:42
pponywong: 1.0 + machine epsilon = 1.0 阿
所以浮點數 ==, != 是有一個 espilon 範圍的51F 01/21 16:44
CaponeKal: 記得這遊戲很硬核 一般人要玩很久才搞懂53F 01/21 16:45
tsunamimk2:  machine epsilon 就是為了科學計算定義的咩...
其實不是 是因為連續計算 特別是乘法之後...
然後與其去為了程式語言或者平台調整 不如直接算整數.54F 01/21 16:45
pponywong: 詳細可以看LAPACK DLMACH 的定義57F 01/21 16:46
tsunamimk2: 特別是金融 交易所 公開市場這種應用..58F 01/21 16:47
pponywong: 記得digicurrency 也有人用python去抓虛擬幣值59F 01/21 16:49
allen20937: 有時候遇到這種情況真的會找Bug找到哭出來,尤其是兩個浮點數比較數值的時候,真的只有一個幹字60F 01/21 16:49
tsunamimk2: 應該說量子電腦應該無法超過戈德爾不完備62F 01/21 16:49
pponywong: 結果沒考慮的浮點數 結果自動交易賠錢 XD63F 01/21 16:49
tsunamimk2: 抓歸抓啊 爬蟲隨便抓 反正是string..
是啊 XD64F 01/21 16:49
gcobc12632: 遇到浮點數我一律轉成字串用BigDecimal計算==66F 01/21 16:49
tsunamimk2: 處理浮點數比較一定要考慮精度啦..67F 01/21 16:50
BSpowerx: 以前被這個問題搞過,從此再也不信任浮點數68F 01/21 16:50
tsunamimk2: 其實電腦是無法表示整個實數域的...
我記得可以用鴿籠原理證明
然後又會牽扯到哥德爾不完備
所以計算機處理浮點數 就跟上面講的一樣 要定義
最極限的 epsion
epislon69F 01/21 16:51
pponywong: 除了 machine epsilon 還有safe minimum
underflow threshold, largest exponent before over75F 01/21 16:53
tsunamimk2: 我記得只要是數值運算的套件都會有工具幫忙77F 01/21 16:53
pponywong: flow, overflow threshold78F 01/21 16:53
gn0111: 因為浮點數79F 01/21 16:53
tsunamimk2: 之前就遇過有人沒搞清楚這個寫出來的python跑結果
然後論文出去之後被...80F 01/21 16:54
sbreezer: 這篇好臭82F 01/21 16:54
pponywong: 所以科學計算是蠻複雜的 除了演算法本身 連機器的運算精準度都要考慮83F 01/21 16:55
assassin762: 西洽果然一堆肥宅工程師,好可憐85F 01/21 16:55
tsunamimk2: 所以最好裝computing server的時候IT要設好啊...
以前在lab有用science linux與python設定過一次
不過當時其實也是照著套件的README去搞 也沒多想XD86F 01/21 16:56
seaEPC: 某方面來說這不是bug就是了,語言就照他設計的方式在運作89F 01/21 17:02
alpho: 那張js 的圖看一次笑一次w90F 01/21 17:03
sky001tp: 這東西竟然可以在C洽討論的這麼熱烈91F 01/21 17:04
tsunamimk2: 這不是bug啊 是計算理論的極限92F 01/21 17:04
kirimaru73: 如果電腦一個位元剛好有10種狀態的話 0.1+0.2不是問題93F 01/21 17:04
tsunamimk2: ECMAScript那種坑是因為這東西本來就是疊床架屋的..95F 01/21 17:05
kirimaru73: 但現實剛好只有兩種狀態,所以0.1和0.2他其實都不認識96F 01/21 17:05
assassin762: 不過這個只要是電資的學生大概就都會知道了吧,沒在唸的除外97F 01/21 17:06
kirimaru73: 電腦只認識0.5, 0.25, 0.125, 0.0625, 0.03125 ......99F 01/21 17:06
s2327259: 看到浮點數就猜到要玩這個梗294F 01/22 02:45
Girls2fan: 大一計算機程式實作會遇到的295F 01/22 04:12
tmwolf: 這串好可怕296F 01/22 09:48
questionboy: C洽到底多少工程師看板297F 01/22 10:42
lolitass: 不要用浮點 給我用INT
浪費記憶體的傢伙298F 01/22 22:15

--
作者 Wardyal 的最新發文:
點此顯示更多發文記錄