等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4163 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
1 ]1 K# }7 C6 b; w; J# Y& Y! n9 i關於你的疑問,下面將進行詳細的解答:) w% G: ?# L9 b5 _* C/ |1 T
(不想看解釋請直接看結論): r, f6 X% N: W( m" }, N
4 I9 k0 r4 f3 I( n- U
: Y- |5 K+ a5 o+ ?2 w7 l1.技術頁面顯示的船艦/防禦三圍問題
3 j9 i/ P$ v! P首先要知道,在32位系統下integer的最大值是2,147,483,647. ^5 b9 P# }( A \
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
0 ?' K! I& C4 p+ f1 `' U1 y! y因此可以看到,0 Q' ~' r5 f* o0 L. ]
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647# g$ i, b% v3 E' h
但也能正確地顯示出7,000,000,000
1 p' }! ~3 O" q8 ^8 T; Z) J) J至於受加成的數據,
) V; E) U0 X! t" ^由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,5 j6 e. r3 S; ` @5 I& r
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了5 F4 N$ C$ _( D1 x/ O
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~2 |7 S/ P8 @% v- e; z, o4 [
結論:只是顯示問題~!!% V2 |/ r7 Y3 U& l* e8 H
L- l, c9 Q2 l( T4 Y" P$ A; L: o) S, V& T
2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
9 i! Z9 P8 _7 O, t9 ^這裡要公開以下戰鬥三圍數值計算公式才能說明:
6 o( A m7 b3 Z2 m- A8 ^) ] 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
8 u$ j% r& q( E6 C, l 防禦值(護盾) = 基礎防禦 * 總防禦加成4 G2 A. T! Q* ` l% H
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成* w" y5 w* U( A* k& R1 i
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
8 E/ ^- _4 t* o裝甲值則是"結構完整性(裝甲)"的十分之一,
- k) }/ ]' r6 i$ E$ `- s* y, m# x以太空基地為例,3 l) L7 H! U. P! Y4 y' z
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
6 s) y' ?2 @3 R" v5 P8 u/ Y: T技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0004 x* @7 O0 ~! t5 [
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,0001 M% \6 `1 W8 y
結論:測試結果沒有任何問題,沒有逆向加成~!!9 ~( f# X: S) ^ \6 v4 C
& t, `; _' r- y, P' Y% | |
|