2012-12-30 128 views
1

我有這樣一段PHP代碼:奇怪POW()PHP錯誤

$skill_amount = round(pow($rarity,1.25)); 

應當指出的是,$稀有從查詢得到。

我輸入值如0,2,4,8,16,32,64。

的是工作時間,但我的用戶上報鉅額值等少量多次

99%:

13771,77936

什麼可能會導致這?

+0

當發生這種情況時,您是否知道$稀少的價值? pow()會將所有輸入轉換爲數字,如果$稀少將是別的東西,這可能會導致意外的輸出。 – Jesperhag

+2

你確定'$稀少'總是一個標量和一個整數嗎?我可能會在該變量上添加一些驗證代碼以確保是這種情況。 PHP手冊有關於'pow'函數的註釋:_This函數將所有輸入轉換爲數字,甚至是非標量值,這可能會導致**怪異的**結果。_ –

回答

7
"What could possibly be causing this?" 

$rarity的較大值或意想不到的值。

如果你可以檢查所有可能的$稀少值,你應該這樣做。否則,你可以做一些基本的調試。

if ($skill_amount > some sane value) { 
    // log $skill_amount & $rarity to a file or email 
    // maybe also some other investigative values, like stuff that assisted the derivation of $rarity 
} 
+0

謝謝你的聲音 –

1

在這個腳本中沒有發現任何問題,所以我同意需要對$稀少進行完整性檢查。

<?php // RAY_temp_amy_neville.php 
error_reporting(E_ALL); 
echo '<pre>'; 

$range = range(1, 4096); 
foreach ($range as $rarity) 
{ 
    $skill_amount = round(pow($rarity,1.25)); 
    $out[$rarity] = $skill_amount; 
} 
print_r($out);