等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4271 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
. l; _$ K" B9 S關於你的疑問,下面將進行詳細的解答:- Z/ s6 {7 C* J3 F
(不想看解釋請直接看結論)$ ~: @7 P2 m' v8 z" B
$ x3 G3 s% r, I* b7 _3 b4 \; L8 ?- M4 t
' t! [% J5 S* N% b+ K$ `1.技術頁面顯示的船艦/防禦三圍問題
8 N5 S9 y3 F% ]9 A0 z# F首先要知道,在32位系統下integer的最大值是2,147,483,6476 \5 h7 l% v. n/ n2 s
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型, w8 e' d M% @4 m1 o/ ~ |
因此可以看到,2 @ A/ |$ A8 C+ R$ ^9 h% w. ?9 f
太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647
8 S. Z2 N, L# ]" v$ j. z# W w但也能正確地顯示出7,000,000,000- k4 W/ u+ r* ?; y7 _5 U4 X/ Z
至於受加成的數據,. l/ D9 }1 H; U5 R; p
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,1 e s' W% L7 t+ ~
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了. p9 I8 r8 k0 \0 I2 R- K
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~& o: c7 ~ q5 [/ B, U3 ^) D
結論:只是顯示問題~!!
, m2 p) o. M4 u8 t; d
, O' f7 j- c( p7 _* J
, ^( [! \, g0 ~5 G* S1 C2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題3 J2 y2 V8 s+ G" r1 o
這裡要公開以下戰鬥三圍數值計算公式才能說明:4 O4 X/ ]$ K C0 N) f4 q' k/ A d
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20): I( c- N. I/ z- t1 L; f
防禦值(護盾) = 基礎防禦 * 總防禦加成* g6 F W9 W" V: w8 p6 \7 E; i; a
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成* c. U0 h* n$ A3 _
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
! `& H- ?9 M2 a$ } j3 x, N: {裝甲值則是"結構完整性(裝甲)"的十分之一,9 \3 K3 E" \) c+ Y
以太空基地為例,* W1 b1 X- ?' B9 Z# o# C
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
$ n" n' w u+ b- z, j; d技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,0008 b" y7 X5 M. ]. J+ C
戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
1 h. ?! y% m2 |1 B* }# c( F結論:測試結果沒有任何問題,沒有逆向加成~!!! L1 S# L, N4 g! U$ ~6 x, P
" A3 g! q; N/ X( E
|
|