2017-08-05 32 views
2

我想通过使用php和bc数学扩展将wei转换为eth。使用php将Wei转换成以太坊

时尝试使用此功能将其转换:

function wei2eth($wei) 
{ 
    return bcdiv($wei,1000000000000000000,18); 
} 

我收到以下错误:

Warning: bcdiv(): Division by zero in C:\xampp\htdocs\test\coindata.php on line 121

有没有人使用的BC-数学的延伸和bcdiv魏转换为ETH,知道,为什么我得到这个错误?

在此先感谢

+0

你的函数适用于我,php7.1和bc数学安装。什么是你的函数调用和121线上的内容? – Michel

+0

奇怪的OO我的PHP版本是 Apache版本\t Apache/2.4.26(Win32)OpenSSL/1.0.2l PHP/7.1.7和bc数学也应该启用...... BCMath支持\t启用。 121行是:'返回bcdiv(​​$ wei,1000000000000000000,18);' 和函数调用是这样的:$ eth = wei2eth(getETHBalance($ ethwallet)); getETHBalance是9357929650000000000 – xeraphim

回答

1

你输入需要指定与BC-数学的字符串,特别是与输入比PHP_INT_MAX更大。 的bcdiv的签名如下:

string bcdiv (string $left_operand , string $right_operand [, int $scale = 0 ])

在我的64位机,则函数的工作,直到$wei >= PHP_INT_MAX(9223372036854775807在我的情况),因为PHP正确施放输入到那时。

echo wei2eth('9357929650000000000'); 
// output 9.357929650000000000 

echo wei2eth(9357929650000000000); // 
// output 0.000000000000000000 and no warning with my env. 

还需要修改bcdiv的第二个参数太多:

function wei2eth($wei) 
{ 
    return bcdiv($wei,'1000000000000000000',18); 
} 

,因为我怀疑你的系统是32位和你的第二个参数是由零转换为“0”,因此该师错误。

+0

非常有帮助谢谢! –