2016-07-12 148 views
0

我試圖將小數點後面的一個值舍入爲8個符號,但它不會舍入任何東西。例如:簡單的圓形函數不圓形

12/653.44 
result: 0.018364348677767 

我想只能在,之後舍入和輸出8個符號。 這是函數:

public static function getUSDRate() 
{ 
    $urldata = get_curl_content('https://example.com/'); 
    $rates = json_decode($urldata, TRUE); 
    if (!$rates) { 
     return '-'; 
    } 
    $usdRate = $rates['USD']['sell']; 
    if (!$usdRate) { 
     return '-'; 
    } 
    return round($usdRate, 8); 
} 

函數調用:$singles->price/getUSDRate() 後來,當我把它呼應整個號碼的功能...

+1

似乎做工精細這裏:https://3v4l.org/HDCf9 – nickb

+1

它完美:'0.01836435'對我來說當然是。該錯誤將在其他地方。 – vaso123

+0

這真的很奇怪。爲什麼我在頁面上顯示完整的數字 – Garg

回答

4

如果你想要的結果只具有8位小數,你應該使用:

echo round($singles->price/getUSDRate(), 8); 

隨着你的問題的信息,我們可以看到,你是太早四捨五入,因爲你以後進行更多的計算。您可能可以刪除getUSDRate()函數的舍入。

如果要在顯示的數字中得到8位小數,則必須在所有計算後執行舍入。你可以修改getUSDRate()功能,包括有舍入:

public static function getUSDRate($value) 
{ 
    $urldata = get_curl_content('https://example.com/'); 
    $rates = json_decode($urldata, TRUE); 
    if (!$rates) { 
     return '-'; 
    } 
    $usdRate = $rates['USD']['sell']; 
    if (!$usdRate) { 
     return '-'; 
    } 
    return round($value/$usdRate, 8); 
} 

echo getUSDRate($singles->price); 

注:getUSDRate函數的聲明表示它是一個類的一部分。在這種情況下,調用該靜態函數應該是:

echo YOUR_CLASS_HERE::getUSDRate($singles->price); 
+1

重要的是要提到,函數內部的舍入不需要使用這個。特別是如果這個答案意味着通過返回原始值來使函數更「靈活」;) – FirstOne

+0

@FirstOne你說得對,我只是更新了答案。 – Jocelyn

+0

感謝您的回答。理想情況下,我想使用圓內功能,但我想現在將使用此.. – Garg