使用 php 将 Wei 转换为以太坊



我正在尝试通过使用php和bc-math扩展将wei转换为eth。

尝试使用此函数进行转换时:

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

我收到以下错误:

警告:bcdiv((:在第 121 行的 C:\xampp\htdocs\test\coindata.php 中除以零

有没有人使用 bc-math 扩展和 bcdiv 将 wei 转换为 eth,并且知道为什么我会收到此错误?

提前致谢

您的输入需要指定为 bc-math 的字符串,特别是输入大于 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",因此除以零错误。

我使用这个函数:

function cryptoNumberFormat($value, $decimal){
$dividend = (string)$value;
$divisor = (string)'1'. str_repeat('0', $decimal);
return bcdiv($value, $divisor, $decimal);
}

您可以使用任何十进制精度和值格式化任何加密令牌。 无需以字符串形式提供值。

最新更新