等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4593 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
+ U! g( W# f2 k0 U4 W- P' ?關於你的疑問,下面將進行詳細的解答:
3 l, `3 B* f( K. E# E- Y(不想看解釋請直接看結論)
$ a" J% l1 x$ u5 u" x! t9 X; _- x2 v- G5 D# c
v. m. e& U* Z- M
1.技術頁面顯示的船艦/防禦三圍問題
# \& r7 u S" @4 H7 }- U9 a6 a首先要知道,在32位系統下integer的最大值是2,147,483,647
! e* m/ l1 }# R( w' X若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,# L/ G- j0 @- P8 s
因此可以看到,
8 S: ]* X9 _8 r8 W1 X) J太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647. _1 I6 B! [! h; W' g
但也能正確地顯示出7,000,000,000, _6 U5 U9 f. \' q* E6 u/ Q
至於受加成的數據,
7 V: o& v3 u# ?* d由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,' a! v7 O2 X; p& H
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
) k7 O% @4 K6 [" d推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
3 `" M- H6 e6 m) q6 E結論:只是顯示問題~!!
) }% @% p6 B! ^# K6 O
! l0 Q3 {* P6 e" ?& `5 d3 X
; [( _5 K0 Z. ~6 f2 s3 e2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題( s, r1 j1 X' f8 Z5 e
這裡要公開以下戰鬥三圍數值計算公式才能說明:
2 U6 R' D5 H0 b2 y 攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
7 R* e0 b) s1 Z/ l# y0 y7 n5 D7 t' S 防禦值(護盾) = 基礎防禦 * 總防禦加成 b2 T5 W: Q9 q$ W5 Y: z# J3 O) X
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
7 {8 e. e F& j7 g9 b9 M由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
: s( m5 F0 ^6 K( B& |% j裝甲值則是"結構完整性(裝甲)"的十分之一,
' t; t$ a* R. ?# ]5 F8 e* B以太空基地為例, d1 O! x% a! l/ x9 v
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
. W0 O" r+ R1 V. L: t1 ]& J技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000: y# V% j6 f: ]3 M- A4 ~3 F
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
% f K4 A$ k2 ?5 @; r- A結論:測試結果沒有任何問題,沒有逆向加成~!!
: W0 J" [$ o& @& e; l+ }
% Q9 e. m B) J" h* _( [ J, s! g* r& q |
|