|
等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4385 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|顯示全部樓層
! ~2 N( ~- ]! p* b關於你的疑問,下面將進行詳細的解答:
% ^6 a) [6 D* Q' m% A. P6 H: R(不想看解釋請直接看結論)
, _ X+ n1 r& U5 g: q/ F4 e$ `* n3 m3 D& _( d" U2 {
8 C0 h- v4 K4 z. f1.技術頁面顯示的船艦/防禦三圍問題
M2 z: [1 ?; x H$ Z- u首先要知道,在32位系統下integer的最大值是2,147,483,647
, f/ F, g- O; W! [若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
( m, t5 ]4 ~9 c( T因此可以看到,: F4 K' O1 T3 F* f+ I
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,6475 I H+ W( S m* P
但也能正確地顯示出7,000,000,000
' v) M6 b8 K( R2 M0 D$ e, p至於受加成的數據,* j: k0 U6 d$ p9 u# @% {
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,4 F# ?/ g. T/ q ^8 `# L* k
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
- V$ N; s2 F: J" F推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
. ~0 U2 j4 q* w: I. [2 B結論:只是顯示問題~!!
3 V4 I% n- `3 L. k# c
) C1 v) l% }1 q2 ^+ J1 [
. \" T- C- @& O [4 k0 _' h2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
1 N: h8 ~2 E# j* D這裡要公開以下戰鬥三圍數值計算公式才能說明:' a W2 y7 I0 Q6 b# h2 ]; X
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
9 ]: g; x. [; B" m 防禦值(護盾) = 基礎防禦 * 總防禦加成5 ]' w6 x$ W( `. a! l) D& D
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成6 e; J1 O7 x& s% k) @
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,2 t, a: \! [$ m5 a' `2 x7 T+ `; t
裝甲值則是"結構完整性(裝甲)"的十分之一,
: A' O) Y1 Y2 X1 e5 B以太空基地為例,
5 ?1 B3 [/ z! H/ U/ n( x8 t% d需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
+ }. H1 R2 s6 M9 p9 l. Q6 P7 |" q技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0004 ]+ m! P0 ~9 T: @ a% C
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000& u- p @3 j i, `! b$ j( T# |
結論:測試結果沒有任何問題,沒有逆向加成~!!! E' }1 L2 R5 N4 R- j5 [* w
3 Y+ X* w; w, G* G2 N y9 l6 ` G) O2 p |
|