等級:12 - 出類拔萃 經驗值:0 / 116 魔法值:852 / 4629 生命值:6%
升級
  100%
TA的每日心情 | 衰 2015-11-12 09:48 |
|---|
簽到天數: 72 天 [LV.6]常住居民II
|
發表於 2015-10-5 07:34:43
|
顯示全部樓層
9 F1 |/ l4 z( t- \
關於你的疑問,下面將進行詳細的解答:# ]$ h I" p' s5 X
(不想看解釋請直接看結論) c% z' o! {2 |# [" u( ~7 F
3 R0 [7 ~8 J4 b* d; K
/ Y1 s/ p/ b; O. c# b1.技術頁面顯示的船艦/防禦三圍問題4 R4 h2 ?5 U8 w. u% i( E. v
首先要知道,在32位系統下integer的最大值是2,147,483,6472 m7 B! ]+ o j# b( h$ j
若變量類型未進行聲明,PHP會根據變量的值自動轉換為正確的數據類型,0 Z3 @! Q2 C) u. D
因此可以看到,
0 ? E8 W% a/ T X% {; |太空基地"結構完整性(裝甲)"中未加成的數據雖然是超過了2,147,483,647# I. B8 f; H* b0 T6 o
但也能正確地顯示出7,000,000,0002 f9 J5 g' E# Z. i& s
至於受加成的數據,! b# D$ w7 P) s( |' x m2 l% R
由於受加成的三圍數據在計算時採用了(int)來進行強制整型轉換,7 ^/ L' {9 R4 Z7 o$ _( J8 V
因此當數值超過2,147,483,647時,數值就會溢出,結果就不能正確地顯示了
* | ?4 u+ _7 i2 }8 D- H推測使用(int)的原因:在計算受加成的數據時會有可能出現小數的情況,為避免出現過長的小數而影響美觀,因此使用(int)來把數值強制轉換成整數,原設計者當時並未考慮到未來會有數值這麼大的船艦/防禦出現,所以使用(int)在當時是沒問題的~9 V! g+ _, Q( O; F
結論:只是顯示問題~!!$ K6 ]' R7 c& O+ r) u
9 ~9 i. k+ `+ J' R
4 O8 ~ n* z" [) `2.戰鬥時的三圍數值與技術頁面顯示的數值不同問題- |! v, p9 H5 B$ ~5 i2 v1 {
這裡要公開以下戰鬥三圍數值計算公式才能說明:; {8 S1 J% k. M
攻擊值 = 基礎攻擊 * 總攻擊加成 * (0.80~1.20)
# B$ D4 l5 E) |- B' F0 ^ t% A/ G0 a 防禦值(護盾) = 基礎防禦 * 總防禦加成% r$ t. F8 C& i( d8 o* y9 ?% D2 t+ y
裝甲值 = (船艦/防禦金屬花費 + 船艦/防禦晶體花費) / 10 * 總裝甲加成( v4 J& \6 j3 K/ I) |& o
由上面公式可見,攻擊值的最終結果包含一個80%~120%的隨機上下浮動變化,
7 A ]( T6 W \& n裝甲值則是"結構完整性(裝甲)"的十分之一,6 x# v; ]: n4 D/ T2 c U5 j
以太空基地為例,5 B! Z# _ ^( @9 z8 a [4 y- m
需花費金屬5,000,000,000和晶體2,000,000,000,重氫花費不加入計算,
: M) {, I- v$ i技術頁面顯示的"結構完整性(裝甲)" = 5,000,000,000 + 2,000,000,000 = 7,000,000,000
& b* ~+ e* G4 ~+ M; |/ B/ p( X戰鬥時真實裝甲值 = 7,000,000,000 /10 =700,000,000
: V& P) Y d6 {/ `$ W% M7 x結論:測試結果沒有任何問題,沒有逆向加成~!!- x9 u% s' ~# V3 N4 ~
! E' ~+ L( A7 P) `; E6 E
|
|