看板 ToS作者 dadadiiii (大D)標題 [無用] 攻擊傷害數字失準的原因時間 Sat Nov 1 21:34:56 2014
前言...
因為一開始聽說傷害破10億時會出問題
所以才玩了一下艾得
結果發現顯示出來的傷害少了一位
( 請參閱 文章代碼 #1KLAQVPy )
但是實際拿來計算時又覺得怪怪的
就一個數學背景出身的我 很不能接受這個奇怪的地方
所以才會追究這點
艾得的頭上的數字是 725852736
http://imgur.com/6jbmvuF
打在光地精身上是 108877913
http://imgur.com/ZLuzUIX
讓我們來計算一下 剋屬是1.5倍
725852736 * 1.5 = 1088779104
地精的防=14
1088779104 - 14 = 1088779090
就算最後一位沒有顯示 那也會是108877909
沒道理變成108877913
後來在巴哈看到了這篇文章
http://ppt.cc/HZp8
數字分別是 991206464 148670976
一樣來計算一下
991206464 * 1.5 = 1486809696
1486809696 - 100000 = 1486709696
很明顯的又是後面幾位出了問題
所以 可以知道MH在計算傷害時
用是一般的浮點數(float)在計算 所以才會出現這個誤差
如果改成倍精度浮點數(double float) 可能會拖到程式的一些效率
SORRY 不懂的話可以去翻一下計概的書就知道了(咦
因為奧丁的倍率沒有一個精確的公式
所以有興趣研究的朋友 可以改用其他2倍攻的卡
( 或者等我有空時再來測一下 )
只要傷害達8位數時 應該就會出現誤差了
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.65.46
※ 文章網址: http://www.ptt.cc/bbs/ToS/M.1414848899.A.199.html
推 Kare112233: 我建議你刪文 然後用回文的方式 不然有些人會不懂3F 11/01 21:36
推 ATTwo: 數學給推4F 11/01 21:36
推 qwe20: 果然是C語言達人大滴勾13F 11/01 21:43
→ bertrend: 之前也有人說自己是數學背景的 請問是數博嗎 還是數碩?15F 11/01 21:45
※ 編輯: dadadiiii (61.231.65.46), 11/01/2014 21:45:37
→ zzxcasd: 跟數學什麼關係 明明就是計概 鄉民就是逼哀17F 11/01 21:46
→ po5980: 這跟數學沒關係阿= =18F 11/01 21:47
推 CenaSucks: 不好意思我太嫩,傷害到7位數就上不去了21F 11/01 21:51
推 st940116: 樓樓上也太好笑了~~~~~我是真的看不懂xDDDDDDDD22F 11/01 21:54
推 oToToT: Java雙精度浮點數範圍這麼小!?
不喜歡java不知道23F 11/01 21:57
推 dd830611: 可惡我明明學過 只好推文裝懂惹25F 11/01 21:59
→ evanade: oT你都沒看文喔,他說因為不是用雙精度所以才不準 = =26F 11/01 21:59
推 TheOneisNEO: 有稍微認真念的話 數學系畢業應該就可以算數學背景了但我覺得這部分講的應該比較算CS 跟MATH關聯小28F 11/01 22:04
→ TheOneisNEO: 有板友不懂的話這邊簡單解釋一下 就是儲存這些數值的變數儲存空間不夠(數值位數太多)導致運算時產生差異31F 11/01 22:07
推 romron: 手機遊戲應該是用java寫的~ 不過概念一樣34F 11/01 22:09
推 p85173: 推~~不過印象中直接(long)double好像就可以了?35F 11/01 22:10
→ lapras: 只是算幾個double不至於拖到效率吧....除非同時算幾千個36F 11/01 22:12
推 Kare112233: 說實話 10億 跟 1億 的用意在哪XDDD38F 11/01 22:16
推 oToToT: 沒仔細看文sorry,看到double float就想應該是寫MH有用39F 11/01 22:19
推 youngmoa: 不是數學阿 數值分析也會提到 就是一種演算法41F 11/01 22:20
推 moho831: 封神的生化犬是否直接破防44F 11/01 22:25
→ zzxcasd: 對某人來說 他硬碟的A片也是數學45F 11/01 22:26
推 talrasha: 演算法很重要 D3>POE 遊戲流暢度有差46F 11/01 22:27
推 harry901: 連這也可以酸 果然只會出一張嘴47F 11/01 22:33
推 oToToT: print "推推\n"49F 11/01 22:41
--