php中的乘法错误

时间:2014-11-30 15:34:58

标签: php echo multiplication

我建立了一个人们可以将硬币(网站货币)兑换成比特币的网站。我遇到的问题是,由于某种原因,当我将$btcprice乘以3或更少时,回声真的很奇怪......为了你的缘故,这是重要的代码:

<?php
// get 0,01 usd in bitcoins into a variable
$btcprice = file_get_contents('https://blockchain.info/tobtc?currency=USD&value=0.01');
$valueInBTC = 4 * $btcprice;
echo $valueInBTC; 
?>

任何4或更高的东西都可以使用,但是如果你试图将它乘以3或​​更少它就会变得奇怪。例如:

<?php
// get 0,01 usd in bitcoins into a variable
$btcprice = file_get_contents('https://blockchain.info/tobtc?currency=USD&value=0.01');
$valueInBTC = 3 * $btcprice;
echo $valueInBTC; 
?>

将回显7.959E-5

我只是不明白问题是什么......

2 个答案:

答案 0 :(得分:1)

在大多数情况下,这是格式化问题。您只需使用printf

即可
printf("%.2f",$valueInBTC); 

另一个不错的选择是使用number_format(); 例如:

$number = 1234.5678;

// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57

答案 1 :(得分:1)

您获得的结果不是错误。它只是一种你不期望/知道的格式。 7.959E-50.00007959完全相同,只是将其写下来的另一种方式。可以将其视为7.959E-5 = 7.959 × (10 ^ (-5)) = 0.00007959。它被称为Scientific notation (E notation)。在cumputation / science中使用这种表示法,因为你可以显示非常大或非常小(如你的情况下)数字较少的数字(写入时间更短)。

要获取其他格式的数字,请使用php函数sprintf()

当您处理比特币价值时,您不应该仅仅为了输出而形成数字。使用比特币,您总是处理非常小的数字,如果您尝试使用格式化的floating point numbers进行计算,您很快就会遇到精度问题。