顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2014-11-01 22:44:38
看板 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
【心得】傷害新里程碑✦14億傷害突破! @神魔之塔 哈啦板 - 巴哈姆特
[圖]
打到艾德當然要玩玩他的爆發這隊不實用純屬娛樂性質雖然之前精獸也隨便就破億,沒什麼稀奇不過10億算是一個新的里程碑所以還是放上來給大家看看!隊伍配置:未剋屬前:991206464剋屬後:148670976...疑~傷害怎麼變低了!!!原來神魔 ...

 

數字分別是 991206464 148670976

一樣來計算一下
991206464 * 1.5 = 1486809696

1486809696 - 100000 = 1486709696

很明顯的又是後面幾位出了問題


所以 可以知道MH在計算傷害時

用是一般的浮點數(float)在計算 所以才會出現這個誤差

如果改成倍精度浮點數(double float) 可能會拖到程式的一些效率

SORRY 不懂的話可以去翻一下計概的書就知道了(咦


因為奧丁的倍率沒有一個精確的公式

所以有興趣研究的朋友 可以改用其他2倍攻的卡 ( 或者等我有空時再來測一下 )

只要傷害達8位數時 應該就會出現誤差了

--
主角11111機獸11111機龍11111龍使22211封神11111奸佞1111111      1111o1
東獸11222西獸11112妖蛋11111千年111oo幻境11111柱神111o1oo      131112
防龍ooooo希臘11111異界11111遊鴨111oo機偶o1111惡棍o11oo        111111
妹子11111北歐11111巫女11111狂魔11111英雄12112機伴11        1121111
遊俠11111埃及11111傭兵o11o1聖誕o11  精獸     魔像 o  111o11111
巨像oooo1西遊11111不死11111魔境1oooo式神11111  11111111111

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.65.46
※ 文章網址: http://www.ptt.cc/bbs/ToS/M.1414848899.A.199.html
slent67: 我竟然看的懂XDD1F 11/01 21:35
shamus0309: 這扯到了資訊科技的範圍XDD2F 11/01 21:36
Kare112233: 我建議你刪文 然後用回文的方式 不然有些人會不懂3F 11/01 21:36
ATTwo: 數學給推4F 11/01 21:36
blueocean292: 完全看不懂.....5F 11/01 21:37
KiSeigi: 推玩神魔學數學6F 11/01 21:37
longmok2500: float...最近常常看到7F 11/01 21:37
evilraistlin: 不明覺厲...8F 11/01 21:37
creamdancer: 浮點運算規則比較不是常人會接觸的東西XDDD9F 11/01 21:38
Woyun99: 數學之塔無誤~10F 11/01 21:40
zinstar: 長知識了!11F 11/01 21:41
pipiann: 玩TOS長智慧12F 11/01 21:41
qwe20: 果然是C語言達人大滴勾13F 11/01 21:43
jefftie2000: 完全看不懂XD14F 11/01 21:45
bertrend: 之前也有人說自己是數學背景的  請問是數博嗎  還是數15F 11/01 21:45
bertrend: 碩?
※ 編輯: dadadiiii (61.231.65.46), 11/01/2014 21:45:37
zzxcasd 
zzxcasd: 跟數學什麼關係  明明就是計概   鄉民就是逼哀17F 11/01 21:46
po5980: 這跟數學沒關係阿= =18F 11/01 21:47
allen65535: 計概中的數學就不是數學嗎19F 11/01 21:50
fishg1216: 快推文要不然人家會以為我看不懂20F 11/01 21:50
CenaSucks: 不好意思我太嫩,傷害到7位數就上不去了21F 11/01 21:51
st940116: 樓樓上也太好笑了~~~~~我是真的看不懂xDDDDDDDD22F 11/01 21:54
oToToT: Java雙精度浮點數範圍這麼小!?23F 11/01 21:57
oToToT: 不喜歡java不知道
dd830611: 可惡我明明學過  只好推文裝懂惹25F 11/01 21:59
evanade: oT你都沒看文喔,他說因為不是用雙精度所以才不準 = =26F 11/01 21:59
yzkeroro: CS之塔27F 11/01 22:02
TheOneisNEO: 有稍微認真念的話 數學系畢業應該就可以算數學背景了28F 11/01 22:04
TheOneisNEO: 但我覺得這部分講的應該比較算CS 跟MATH關聯小
spellcaster: 沒注意過數字有錯欸 還好看得懂30F 11/01 22:06
TheOneisNEO: 有板友不懂的話這邊簡單解釋一下 就是儲存這些數值的31F 11/01 22:07
TheOneisNEO: 變數儲存空間不夠(數值位數太多)導致運算時產生差
TheOneisNEO: 異
romron: 手機遊戲應該是用java寫的~ 不過概念一樣34F 11/01 22:09
p85173: 推~~不過印象中直接(long)double好像就可以了?35F 11/01 22:10
lapras: 只是算幾個double不至於拖到效率吧....除非同時算幾千個36F 11/01 22:12
dadadiiii: 快叫MH改一下程式37F 11/01 22:13
Kare112233: 說實話 10億 跟 1億 的用意在哪XDDD38F 11/01 22:16
oToToT: 沒仔細看文sorry,看到double float就想應該是寫MH有用39F 11/01 22:19
tease0623: 看得懂給推XD40F 11/01 22:19
youngmoa: 不是數學阿 數值分析也會提到 就是一種演算法41F 11/01 22:20
harry901: 太神了 不推不行42F 11/01 22:23
x7791175: YA 我看得懂耶43F 11/01 22:23
moho831: 封神的生化犬是否直接破防44F 11/01 22:25
zzxcasd 
zzxcasd: 對某人來說  他硬碟的A片也是數學45F 11/01 22:26
talrasha: 演算法很重要   D3>POE    遊戲流暢度有差46F 11/01 22:27
harry901: 連這也可以酸 果然只會出一張嘴47F 11/01 22:33
rubyli5050: printf("推推\n");48F 11/01 22:37
oToToT: print "推推\n"49F 11/01 22:41

--
※ 看板: K_hot 文章推薦值: 0 目前人氣: 0 累積人氣: 64 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇