2017-08-05 1 views
2

私はphiとbc-math拡張を使ってweiをethに変換しようとしています。Wei to EthereumをPHPで変換する

この機能を使用してそれを変換しようとしている:

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

は、私は次のエラーを取得する:

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

は、誰もがETHに魏を変換するために、BC-数学の延長とbcdivを使用して知っていますなぜこのエラーが出るのですか?

事前に感謝

+0

あなたの機能は、php7.1とbc-mathがインストールされています。あなたの関数呼び出しは何ですか?121行目は何ですか? – Michel

+0

奇妙なoO私のPHPバージョンは ですApacheバージョン\t Apache/2.4.26(Win32)OpenSSL/1.0.2l PHP/7.1.7とbc-mathも有効にしてください... 'BCMath support \t enabled'。 121行目は 'return bcdiv(​​$ wei、1000000000000000000,18);' であり、関数呼び出しは次のようになります。$ eth = wei2eth(getETHBalance($ ethwallet));どこgetETHBalanceは9357929650000000000 – xeraphim

答えて

1

あなたの入力は、特別PHP_INT_MAXより大きい入力して、BC-数学で文字列として指定する必要があります。 bcdivの署名は以下の通りです:PHPは、それまで入力を正しくキャストので(私の場合は9223372036854775807)$wei >= PHP_INT_MAXまで私の64ビットマシンで

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

は、あなたの機能が動作します。

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

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

また、あなたがあまりにもbcdivの第2引数を変更する必要があります:私はあなたのシステムが32ビットであり、あなたの第二引数が「0」にキャストされている疑いがあるため、ゼロによるので、除算、

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

をエラー。

+0

非常に有用なおかげで! –