除以两个整数时如何获得浮点值?(菲律宾比索)

2022-08-30 19:11:10

嗨,我试图除以两个整数,例如:12/13,但我总是得到一个完整的整数1而不是十进制数。

我尝试将值类型转换为在手之前浮动,但没有成功。

基本上我想要的只是一个十进制结果,比如:0.923...

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

答案 1

在正常情况下,您的代码应返回浮点值...0.923076

您获得舍入整数的原因可能是因为您将 for 设置为 ,以解决此问题,请在计算之前编辑您的代码或在代码中使用。ini setting"precision"0php.iniini_set("precision", 3);

解决此问题的另一种方法是使用 BCmath

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

另一种不使用任何扩展的方法是使用一个小的数学技巧,方法是将要除以的值相乘以获得 。
这样,您将除以,整个部分将为 ,然后,由于您乘以1e3,因此在最后最多3个位置之前插入逗号/点。10003 decimals1200013923

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


答案 2
echo $value = $x / (float) $y;

如果将变量强制转换为浮点数,则解释器将使用浮点除法而不是整数除法。$y

因为默认假设对两个整数变量使用整数除法。

如果您使用(浮点变量作为分母),则有所不同:结果始终是浮点数$y = 13.0


推荐