こんにちは、例: 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
通常の状況では、コードは浮動小数点値を返す必要があります0.923076
...
丸められた整数を取得する理由は、 for が に設定されているためである可能性があります。ini setting
これ"precision"
を修正するには、計算の前にコードを0
編集するphp.ini
か、コードで使用します。ini_set("precision", 3);
これを回避する別の方法は、BCmathを使用することです。
echo $value=bcdiv($a, $b, 3);
拡張子を使用しないさらに別の方法は、除算する値を掛けて1000
を取得するという、ちょっとした数学のトリックを使用することです3 decimals
。
このように で割り12000
、13
全体は になります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
$value = (float)($x/$y); を使用するだけです。// 結果は float になります。
乾杯!