等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4534 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
$ j0 O: F$ d- J6 j+ w# L關於你的疑問,下面將進行詳細的解答:- [3 _2 w' i: R+ Q8 `
(不想看解釋請直接看結論), M4 l0 S2 g8 t
. N1 ]& F$ z& O# e6 e7 `% j% y8 m8 R Z" Z# F$ K& h8 L3 x
1.技術頁面顯示的船艦/防禦三圍問題
! I& R9 H) X4 R0 ]首先要知道,在32位系統下integer的最大值是2,147,483,647
$ _/ ?4 ]+ X4 _" D) C若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
5 }4 R$ ~+ |/ ]9 `9 J5 _因此可以看到,1 Y1 ]3 t, |' B5 _" j( H
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647( M: b, ` w- v. u3 O0 l+ G7 l6 Q
但也能正確地顯示出7,000,000,000# [9 n8 `* P/ I( ^0 v' \
至於受加成的數據,+ t/ W5 u7 T0 t! M( p' W+ l y
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
# u0 v" N+ K' }/ C9 c; d( n( w$ r因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
. Z/ j- O- s5 p/ I% W推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~+ }5 b" D7 }( M9 R: M- r/ B
結論:只是顯示問題~!!
; O7 R. |0 s- C$ q! [
; W! p5 I. B& Y3 X
- t; k" X0 Q: f+ f& q5 t, a2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
0 {; N+ Z J2 _/ M) Q. o這裡要公開以下戰鬥三圍數值計算公式才能說明:& W4 z! M5 w" B2 w5 J
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
1 Y9 V9 `# l+ N1 t1 w( y 防禦值(護盾) = 基礎防禦 * 總防禦加成1 ^# c2 f; F9 J: U) H2 s, e& T
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
; {4 ^* h2 |3 d t/ T由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,1 `9 P; i6 _7 A/ \
裝甲值則是"結構完整性(裝甲)"的十分之一,
6 N! M- G l3 ?3 _- M7 U以太空基地為例,
+ x, `- O3 }$ S- C3 }7 s需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
( v6 |4 e' }) h$ M技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
# |1 }- g3 ~" U, o, _, Q/ |- m戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0005 I: T' c6 p6 [1 x6 h0 V9 H! z
結論:測試結果沒有任何問題,沒有逆向加成~!!/ k- _. a+ V3 F# z- [
3 ]- \+ f/ \# m' ]7 x( E |
|