Hi I am trying to divide two integers ex: 12/13 but I always get a whole integer 1 not a decimal number.
I tried type casting the values to float before hand with no success.
Basically all I want is a decimal result like: 0.923...
$x = 12;
$y = 13;
echo $value = $x / $y; //Would like to see 0.923 not 1
Under normal circumstances your code should return the floating value
0.923076
...The reason you get a rounded integer might be because you have your
ini setting
for"precision"
set to0
, to fix this either edit yourphp.ini
or useini_set("precision", 3);
in your code before the calculation.Another way to workaround this is to use BCmath:
And yet another way without using any extension is to use a little math trick by multiplying the value you want to divide by
1000
to get3 decimals
.This way you'll divide
12000
by13
and the whole part will be923
, then since you multiplied by 1e3 insert a comma/dot before the last most 3 places.echo divideFloat($a, $b); // 0.923
Just use $value = (float)($x/$y); //Result will in float.
Cheers!
if you cast the variable
$y
as float the interpreter use the floating point division instead of integer division.because it's default asumption to use integer division on two integer variables.
It was different if you used
$y = 13.0
(a float variable as denominator): The results is always a float numberAll other answers are NOT RIGHT, because PHP's division will always return float values, as is stated clearly in official manual PHP: Arithmetic Operators , except for cases when two operands are both integers which can be evenly divided.
In fact, the question is wrong: the code should produce 0.923..., as was expected from the questioner.
Sarcastically, the voted-down answer (came from @BulletProof47) is the only other one which is just NOT WRONG (but also meaningless). Who knows what he was thinking, but I bet everybody knows why it was voted down :D
In case who is interested, the underlying function which does division in php is
div_function
, located inZend/zend_operators.c
, shown below: