2017-08-05 47 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

非常有幫助謝謝! –