2016-07-12 5 views
0

10進数の後に1つの値を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

関連する問題