Я создаю сайт, где люди могут обменивать монеты (валюту сайта) на биткойны. У меня проблема в том, что по какой-то причине, когда я умножаю $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
Я просто не понимаю, в чем проблема …
Результат, который вы получаете, не является ошибкой. Это просто в формате, который вы пока не ожидаете / не знаете. 7.959E-5
точно так же, как 0.00007959
это просто другой способ записать это. Думайте об этом как 7.959E-5 = 7.959 × (10 ^ (-5)) = 0.00007959
, Это называется Научная нотация (E нотация). В перечислении / науке это обозначение используется, потому что вы можете показывать очень большие или очень маленькие (как в вашем случае) числа с меньшим количеством цифр (их просто написать короче).
Чтобы получить число в других форматах, используйте функцию php Sprintf ().
Поскольку вы работаете со значениями биткойнов, вы не должны форматировать числа до тех пор, пока они не будут выведены. С биткойнами вы всегда имеете дело с очень маленькими числами, и вы скоро столкнетесь с проблемами точности, если попытаетесь вычислить с отформатированным числа с плавающей точкой.
В большинстве случаев это проблема форматирования. Вы можете просто использовать printf
printf("%.2f",$valueInBTC);
Еще одним хорошим вариантом является использование number_format();
Например:
$number = 1234.5678;
// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57