@6Mkfcbpwamxx

Как конвертировать биткоин в сатоши?

Как правильно конвертировать сатоши в биткоин? На данный момент у меня есть 2 функции.
Сатоши в биткоин - тут все ок, работает как нужно:

function SatoshiinBTC($value){
		return bcdiv(intval($value), 100000000, 8);
	}

Биткоин в сатоши - а вот тут есть определённые нюансы. Если попробовать конвертировать 0.00015 btc в сатоши - получаем 14999, хотя должны получить 15000. Это происходит из-за особенности работы intval. Если я intval заменю на round - будет ли это считаться правильным (результат получается тот который нужен)?

function BTCinSatoshi($value){
		return intval($value * 100000000);
	}
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
dyuriev
@dyuriev
A posteriori
function BTCinSatoshi($value){
    return bcmul($value, 100000000, 0);
  }

и это лишь один из вариантов, просто судя по первому куску кода bcmath у вас таки присутствует.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
ПРАВИЛЬНО

Умножить на миллион (или сколько там их должно быть?)
Если попробовать конвертировать 0.00015 btc в сатоши - получаем 14999, хотя должны получить 15000

Для этого есть числа, которые хранят десятичные дроби / числа с произвольной точностью.

Гугл говорит, что в php для этого есть bcmath: https://www.php.net/manual/en/intro.bc.php
Есть ещё сторонние библиотеки, которые делают аналогичное, но чуть удобнее: https://php-decimal.io/#introduction
Можно вообще накостылять и использовать только целые числа с множителями, и строить на них свои вычисления.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы