等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4163 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
) O' x$ v6 X8 @2 C! H) d! J
關於你的疑問,下面將進行詳細的解答:
, T/ v2 n" V0 i- v(不想看解釋請直接看結論); l9 g o% s5 G( `# a& k+ V
5 H5 u) X) J4 I, \' j8 o9 {
+ C" d3 M) Q% c) f/ T r
1.技術頁面顯示的船艦/防禦三圍問題* b/ W+ f, O4 B2 r/ o; a4 f
首先要知道,在32位系統下integer的最大值是2,147,483,6475 z c# E! Y7 P+ ~
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,
1 z9 o' Y1 G# F4 H$ J o因此可以看到,
, M. P6 |( O. V1 f: t0 [- {太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647/ o9 x' c2 S; F7 @8 c6 Q* C
但也能正確地顯示出7,000,000,000$ B2 {: Y+ q D1 p3 y5 }7 n3 {- a
至於受加成的數據,
/ [! d8 ?5 @; w- P由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,. K" q# _6 ^/ K; K
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了: n7 b% ^$ c, F% l: w3 s/ R
推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~
% C6 _% k, o- }" ~) S' N, [1 |結論:只是顯示問題~!!
1 d7 h& i- D1 o" N& q; v8 s# b/ a g1 k1 r7 R$ Z* H& n
& g; T+ L# e q. Y* `) g+ l: f2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題
& M4 ?# K1 I+ S% P5 [3 y, u4 s5 z這裡要公開以下戰鬥三圍數值計算公式才能說明:+ r) c3 V- \ `# F: |, J/ x
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)& O4 A! _8 }6 `6 R
防禦值(護盾) = 基礎防禦 * 總防禦加成# l9 w4 J2 Z0 C8 f6 j) V
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成
7 I! N: F1 K8 G) P7 X由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,3 `& i. |9 v, M) o
裝甲值則是"結構完整性(裝甲)"的十分之一,
( K2 D/ Q/ R* R7 N0 _1 y以太空基地為例,- D" G* N- g" x! A( h$ \" o/ X) [( X
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
, w4 D* Z9 x4 N0 M' w技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
4 y ]& S+ C7 {% `( Y6 @0 @! r戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
B! d3 S/ ^5 R6 d結論:測試結果沒有任何問題,沒有逆向加成~!!! b( `" o- `4 P/ V3 l
0 p4 J7 l* B3 Z! u3 M$ c; ` |
|