等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4657 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
# a- Y8 a G& ^# B# v: M- A關於你的疑問,下面將進行詳細的解答:
7 E, i$ R9 V$ l: ~; L1 G- e(不想看解釋請直接看結論)
' O3 N! Z4 A+ V' R: N& j! {% ?$ z. d6 \/ L% A
3 q: w# I" u/ u/ t# v1.技術頁面顯示的船艦/防禦三圍問題. ~" S' Z9 j2 H$ b# l3 ?
首先要知道,在32位系統下integer的最大值是2,147,483,6472 t/ N. _& b0 n* \' t$ U+ }' G" _
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
! a; X. F& N1 F0 ]' l" Z/ Y9 U因此可以看到,
- |* l# D. t& Q0 e太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
7 Y1 F4 w7 b( F6 I9 z# `4 L但也能正確地顯示出7,000,000,000" j$ W) Y. m/ U" }
至於受加成的數據,/ A; h/ `( I( y3 C1 }8 `+ k
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,8 M& w8 ?* U4 [& G/ R* d8 e
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
1 M# @4 l' t/ U推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~% `0 D, _" Q( Q% x
結論:只是顯示問題~!!3 X! U7 l8 u* V: f; O, [) m0 G# F
$ d' U& N( p$ O# _( I
% F. \# u! r% Z4 J. f" r S
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
e% x" s" h( s$ _( m X$ |這裡要公開以下戰鬥三圍數值計算公式才能說明:( S7 I5 ^7 [) x- \
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
3 w# m5 g/ {* c6 U0 ?! s 防禦值(護盾) = 基礎防禦 * 總防禦加成
- Q; k; L, Z. S) H5 l) Q5 u 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成. z. m: k- Q$ n; {+ b
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
. v3 b0 B* L, o9 o裝甲值則是"結構完整性(裝甲)"的十分之一,' |" N6 h! o/ q: G% S5 I I7 N
以太空基地為例,
2 b) Y+ m! E1 n L% w5 a需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算, S1 D1 u: l ?# Z3 e/ G5 ^) D
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000" g9 I! [1 l; a# L/ Y g
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
2 |" \1 q* L0 L X+ L結論:測試結果沒有任何問題,沒有逆向加成~!!
; `" k# W! Y" a4 G7 P
" \+ _" Q5 \8 o$ E |
|