等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4594 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
9 I6 R0 V4 e. _5 m
關於你的疑問,下面將進行詳細的解答:; h& x$ z' t: B7 b" o# ]
(不想看解釋請直接看結論)- {# K# b: `% D) d. p5 E+ i3 c
& G" l5 y- C+ O5 B, K
) {) W8 E+ i* L) h' J7 o+ q. P& ~* E1.技術頁面顯示的船艦/防禦三圍問題' c: c* s. ]/ _7 T, N2 |
首先要知道,在32位系統下integer的最大值是2,147,483,647
3 Z: v+ x6 }$ q. m/ } z: I若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,. E2 O( R( |7 H5 T" l0 Y
因此可以看到,
7 \* O4 R/ k# _; f" N. l/ x太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
m) r0 ~1 l0 @1 T1 Z4 P" B但也能正確地顯示出7,000,000,000# P" g- l6 V* Y8 \" A; x& p
至於受加成的數據,
+ f# I# d6 M; v( ]- b& ^由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
# L/ k$ p8 j4 r6 |, }因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
4 C9 E, j) Y: k* B推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~) T0 [" k- }3 h% z& y
結論:只是顯示問題~!!6 ?- e0 z' p. r" f4 w# Q8 C
' O$ X" y1 J; ` S$ r
1 f7 ?4 T% E6 j2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
" E: I+ E3 e: I1 L. @' ^這裡要公開以下戰鬥三圍數值計算公式才能說明:( ?1 O& |1 e. t, q* o! m$ a* Q
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
$ ^% |# H+ E3 k" O6 W1 U+ y 防禦值(護盾) = 基礎防禦 * 總防禦加成. z" [/ p3 w4 W5 i
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成% }8 [) l/ a/ B6 I5 _" s6 H( N
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
* ^! s0 c- e. k1 ~) d4 f裝甲值則是"結構完整性(裝甲)"的十分之一,
M; B) z P, x9 ^3 L$ Y- `以太空基地為例," i! K9 e& B- X; o/ C$ |9 i0 S, N
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,# [: ^3 g# ], S. M. V: B* o
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
( Q7 Q9 l$ H' G: H/ {戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000; @7 r i( M5 p _" v
結論:測試結果沒有任何問題,沒有逆向加成~!!
* ~! l3 c# J" Q. V2 u' T8 S; S2 r
, @7 H4 W7 |+ d" o |
|