22

こんにちは、例: 12/13 の 2 つの整数を除算しようとしていますが、常に 10 進数ではなく整数 1 になります。

事前に値を float に型キャストしようとしましたが、成功しませんでした。

基本的に私が欲しいのは、0.923...のような10進数の結果だけです...

$x = 12;
$y = 13;
echo $value = $x / $y; //Would like to see 0.923 not 1
4

4 に答える 4

17

通常の状況では、コードは浮動小数点値を返す必要があります0.923076...

丸められた整数を取得する理由は、 for が に設定されているためである可能性があります。ini settingこれ"precision"を修正するには、計算の前にコードを0編集するphp.iniか、コードで使用します。ini_set("precision", 3);

これを回避する別の方法は、BCmathを使用することです。

echo $value=bcdiv($a, $b, 3);

拡張子を使用しないさらに別の方法は、除算する値を掛けて1000を取得するという、ちょっとした数学のトリックを使用することです3 decimals
このように で割り1200013全体は になります923。次に、1e3 を掛けたので、最後の 3 桁の前にコンマ/ドットを挿入します。

function divideFloat($a, $b, $precision=3) {
    $a*=pow(10, $precision);
    $result=(int)($a / $b);
    if (strlen($result)==$precision) return '0.' . $result;
    else return preg_replace('/(\d{' . $precision . '})$/', '.\1', $result);
}

echo divideFloat($a, $b); // 0.923

于 2013-06-20T16:48:02.957 に答える
-2

$value = (float)($x/$y); を使用するだけです。// 結果は float になります。

乾杯!

于 2013-06-20T16:05:28.923 に答える