等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4587 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
8 p' T! }" K% P \' I$ d* ~關於你的疑問,下面將進行詳細的解答:0 H1 C3 c/ n6 j8 B8 @% g" N1 S: V: r
(不想看解釋請直接看結論)5 e. G, E% N9 q- b( U# @' `
% j! ]. | k6 H/ U! z9 o
3 M/ G: z, O2 l1.技術頁面顯示的船艦/防禦三圍問題
2 p3 E% q- l' D! t+ K! o首先要知道,在32位系統下integer的最大值是2,147,483,6475 Q8 ~+ Z( e& s, j
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
- R2 W$ ~4 M& b# m p$ _因此可以看到,
6 n b! l) u9 { ^) ~( ?& x太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
* e" A- `- \( x9 H; c3 O% M% c但也能正確地顯示出7,000,000,000! `, }- J$ |' j3 X" k( T) ]
至於受加成的數據,) i) y! l0 O. Z3 H6 g* y8 ^
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換," \9 a: {# B% w+ J6 S& Z; X
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
/ g: _+ g. U& R+ o7 s) m1 y0 D. c推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
o8 s$ Z& F9 o; Z9 _" v* m結論:只是顯示問題~!!
" O, T. O3 ^! S! O
5 X1 Y5 D' C$ ]% D" h: u6 w; _, R; ?2 W3 z1 M' s, [5 c* c
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
' u' }5 y. N6 b1 _0 W這裡要公開以下戰鬥三圍數值計算公式才能說明:
! M2 p( X7 v, s; R' x1 E5 W 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
) L6 }& C2 {4 @, X. K 防禦值(護盾) = 基礎防禦 * 總防禦加成
/ d4 w% u! M0 p% }6 Y! y% P$ q8 b 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
6 ?2 y% W" I. D6 B T( w+ M由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
3 \$ O6 O2 t& Z6 c7 I" }裝甲值則是"結構完整性(裝甲)"的十分之一,
0 q( Y' o; S. h8 G4 R. V, L以太空基地為例,
: x5 V/ t/ X4 t" J' D" K, m需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,5 _/ I B' Q0 g3 K: T) j% e7 u
技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000) a% F! d7 A1 a2 ]7 X
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000! l1 D* i- q# H; B" ^! r7 w
結論:測試結果沒有任何問題,沒有逆向加成~!!
" Q4 m# d# g) O# | `; Z+ t+ [5 @$ L& F0 p
|
|