等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4261 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
! Z- ~; x* z0 x2 C8 O/ K C關於你的疑問,下面將進行詳細的解答:5 A6 }3 R- @" U8 g; _
(不想看解釋請直接看結論)9 ^/ P) Z5 n9 `3 }' }1 q3 E) A
- B7 p$ n$ H$ O) k1 f" x
: r6 h s* P7 {1 n, H; i1.技術頁面顯示的船艦/防禦三圍問題7 H7 i7 H: T# W; C' C
首先要知道,在32位系統下integer的最大值是2,147,483,647
# W& N$ R2 [. i- {0 {5 r. l& M1 y若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
; d/ i5 ^' W3 `3 q因此可以看到,
) p0 n' I$ d F% g# b太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
2 o9 U# P% T4 j& K$ K% q6 ?+ H但也能正確地顯示出7,000,000,000
4 O8 ~% F3 N3 H! }& t0 S至於受加成的數據,
/ i8 U6 X) |" I7 h由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,
; s5 H) R2 M% F) Q8 |, K* u7 u# C因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
. l! `0 Y0 ^3 k推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~3 L1 k# Y3 \/ F2 t4 D
結論:只是顯示問題~!!8 @; A' w" U9 l( O1 r0 Q* A
- s5 O7 N+ Z2 o! l! C
& ]8 a. W/ R! H: f% S% c* _0 b7 y2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題" }+ V, z2 z5 A2 k8 K& M
這裡要公開以下戰鬥三圍數值計算公式才能說明:
3 W" D. i1 h c 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
+ s$ B# [; ?9 {7 D8 B 防禦值(護盾) = 基礎防禦 * 總防禦加成
# w. m* v9 y4 x( t% n- k- A1 K( r 裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成6 _- A5 J4 a& _2 F
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,/ M3 ?4 `" B- p
裝甲值則是"結構完整性(裝甲)"的十分之一,6 b6 P6 X4 M8 i
以太空基地為例,! |, q6 Z( |" g
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
% X8 T/ v8 _* _+ [% A( a技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
6 Y" E* U* m0 \3 r8 l1 K# l戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
, @, d: u6 P1 k, b結論:測試結果沒有任何問題,沒有逆向加成~!!
1 I" l2 K9 w: [% G" w
8 q3 j4 c: H* X D3 v7 e |
|