除以两个整数时如何获得浮点值?(菲律宾比索)
嗨,我试图除以两个整数,例如:12/13,但我总是得到一个完整的整数1而不是十进制数。
我尝试将值类型转换为在手之前浮动,但没有成功。
基本上我想要的只是一个十进制结果,比如:0.923...
$x = 12;
$y = 13;
echo $value = $x / $y; //Would like to see 0.923 not 1
嗨,我试图除以两个整数,例如:12/13,但我总是得到一个完整的整数1而不是十进制数。
我尝试将值类型转换为在手之前浮动,但没有成功。
基本上我想要的只是一个十进制结果,比如:0.923...
$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);
另一种不使用任何扩展的方法是使用一个小的数学技巧,方法是将要除以的值相乘以获得 。
这样,您将除以,整个部分将为 ,然后,由于您乘以1e3,因此在最后最多3个位置之前插入逗号/点。1000
3 decimals
12000
13
923
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
echo $value = $x / (float) $y;
如果将变量强制转换为浮点数,则解释器将使用浮点除法而不是整数除法。$y
因为默认假设对两个整数变量使用整数除法。
如果您使用(浮点变量作为分母),则有所不同:结果始终是浮点数$y = 13.0