等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4337 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
- i4 p P8 u- G ^; A8 v+ Z關於你的疑問,下面將進行詳細的解答:8 J0 x9 U0 g! \: R% p: X, A) j, s4 W
(不想看解釋請直接看結論)
) O" o1 Q5 [" Q# _0 W8 ~; j! l+ f! Z% ?1 w9 O
! Z1 ~, D1 B. O# a$ o1.技術頁面顯示的船艦/防禦三圍問題
) h; I8 z; w: n/ e! u首先要知道,在32位系統下integer的最大值是2,147,483,647
6 @; Q+ W; W+ t% ?若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
1 o5 t: y0 s' R; T4 w/ F3 \& p/ H0 G因此可以看到,
5 W8 h% K4 ^; o2 r太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
( p& [! w& } Y3 a+ H/ }5 H但也能正確地顯示出7,000,000,0005 C1 Z) \. |' C( ?
至於受加成的數據,2 r0 t9 E' \( T- M
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,; w/ Q- {9 @/ t, n' a* ?4 r6 P
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
- n# J2 G. o4 W. p推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~+ Z; ]+ V- D J) R" P9 a: S- V
結論:只是顯示問題~!!
& V/ S! @8 {, f* Z) P; T3 g3 N9 U% [+ `. T; J
: ?* h) i7 P9 T y, ^- j
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
* T! E( c% ^' Z這裡要公開以下戰鬥三圍數值計算公式才能說明:
6 v, E+ {9 k" c3 G 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
) b. X1 C/ r) j. U" I. H; f 防禦值(護盾) = 基礎防禦 * 總防禦加成/ [% `) x% D5 Y8 s
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
2 ?8 l X) H, t, M. e% d3 N6 C由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
# s9 X, ^1 b6 R: K$ L裝甲值則是"結構完整性(裝甲)"的十分之一,
, P8 R) R! V6 p+ ^# R以太空基地為例,3 V2 D! G2 _+ N' K. \0 O& D
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
. D& [; v5 o" u/ \' Z, y/ Q技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0008 z% z( ~! ^/ R: _8 f0 a1 [* v8 _
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
; {/ b! o# }# }2 y結論:測試結果沒有任何問題,沒有逆向加成~!!, D J+ ^- i1 S5 z, u7 a
" w1 r. C5 Q. m; D
|
|