I'm trying to convert wei to eth by using php and the bc-math extension.
when trying to convert it using this function:
function wei2eth($wei)
{
return bcdiv($wei,1000000000000000000,18);
}
I get the following error:
Warning: bcdiv(): Division by zero in C:\xampp\htdocs\test\coindata.php on line 121
Has anyone used the bc-math extension and bcdiv to convert wei to eth and knows, why I get this error?
Thanks in advance
Your inputs needs to be specified as a string with bc-math, specially with the input greater than PHP_INT_MAX. The signature of bcdiv is as follow:
string bcdiv ( string $left_operand , string $right_operand [, int $scale = 0 ] )
On my 64bit machine, your function works until $wei >= PHP_INT_MAX
(9223372036854775807 in my case) because PHP cast the input properly until then.
echo wei2eth('9357929650000000000');
// output 9.357929650000000000
echo wei2eth(9357929650000000000); //
// output 0.000000000000000000 and no warning with my env.
Also you need to modify the second argument of bcdiv too:
function wei2eth($wei)
{
return bcdiv($wei,'1000000000000000000',18);
}
because I suspect that your system is 32bit and your second argument is cast to '0', hence the division by zero error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With