Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 24.08.2017
Сообщений: 7

Обратный перевод с RUB на BTC

24.08.2017, 19:27. Показов 1021. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть сайт на котором имеется курс BTC, к примеру (1 BTC = 250 985,88 RUB)
Так же на данном сайте имеется заработанная сумма на текущий момент, например (5,796 RUB)
Задача рядом с этой строкой вывести текущий баланс в BTC.
Вот тут и появилась проблема конвертировать из имеющего курса RUB заработанную сумму в BTC.

Долго ломал голову, смотрел различные API, но всё не то, что мне нужно.

Через некоторое время расчётов выявил алгоритм в 10 ступеней:

1) Получаем курс BTC в переменную $a [$a = 250 985,88]
2) Округляем содержимое переменной $a до целого числа: $a = round($a); [$a = 250986]
3) Получаем заработанную сумму RUB в переменную $b [$b = 5,796]
4) Округляем содержимое переменной $b до 2 знаков, после запятой: $b = round($b, 2); [$b = 5,80]
5) Умножаем переменную $b на 100000000 [$b = 580000000]
6) Делим содержимое переменной $b на содержимое переменной $a: $c = $b/$a; [$c = 2310,8858661439283466010056337804]
7) Округляем значение переменной $c до 1-го знака, после запятой: $c = round($c, 1); [$c = 2310,9]
8) Делим значение переменной $c на 100000000 [$c = 0,000023109]
9) Округляем значение переменной $c до 8-ми знаков, после запятой: $c = round($c, 8); [$c = 0,00002311]
10) Выводим значение переменной $c в результат (5,796 RUB = 0,00002311 BTC)

Интересно, не слишком ли много операций, есть ли проще решения и какие?
Поделитесь, пожалуйста Вашим опытом.
Спасибо.

Добавлено через 1 час 13 минут
Разобрался с упрощением и более точным рачетом:

$a = 250985.88; //Получаю курс BTC
$b = 5.796; //Получаю баланс RUB
$c = 100000000; //Константа для расчётов
$str = round($b*$c/$a)/$c; //Провожу расчёт
$result = sprintf('%.8F',$str); //Вывожу форматированную строку с результатом

Добавлено через 1 минуту
Результат $result: 0.00002309
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2017, 19:27
Ответы с готовыми решениями:

перевод usd,euro в rub
сабж. вот парсер c ЦБ: <?php // URL страницы сайта ЦБ РФ, где находится курс доллара $url = "http://cbr.ru"; ...

Обратный перевод time()
Привет Всем! Скажите пожалуйста, как перевести функцию time() обратно? т.е полученные цифры перевести обратно во время Заранее...

Обратный перевод в восьмиричную систему
Целое положительное число m записывается в восьмеричной системе счисления, и разряды в этой записи переставляются в обратном порядке....

4
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
24.08.2017, 19:35
Можно проще, обратный курс это: 1 / прямой курс
т.е.
1 BTC = 250 985,88 RUB
1 RUB = 1 / 250 985.88 = ... BTC
0
0 / 0 / 0
Регистрация: 24.08.2017
Сообщений: 7
24.08.2017, 19:43  [ТС]
Да, но ведь баланс RUB у клиента постоянно меняется, так же меняется и курс.
К тому же задача динамично конвертировать состояние счёта RUB в BTC без потери на выполнение кода.
По моему, пример:
PHP
1
2
3
4
5
$a = 250985.88; //Получаю курс BTC
$b = 5.796; //Получаю баланс RUB
$c = 100000000; //Константа для расчётов
$str = round($b*$c/$a)/$c; //Провожу расчёт
$result = sprintf('%.8F',$str); //Вывожу форматированную строку с результатом
Имеет место быть.
Он ,по крайней мере, работает.
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
24.08.2017, 20:16
Цитата Сообщение от vinantole Посмотреть сообщение
Да, но ведь баланс RUB у клиента постоянно меняется, так же меняется и курс.
Они всегда будут новые при любых расчетах, что мешает каждый раз баланс перевести по курсу btc
Цитата Сообщение от vinantole Посмотреть сообщение
К тому же задача динамично конвертировать состояние счёта RUB в BTC без потери на выполнение кода.
Выполнять расчеты с большей точностью( больше чем нативно делает php(вроде 21 знак после запятой)) и только в конце округлять
0
0 / 0 / 0
Регистрация: 24.08.2017
Сообщений: 7
25.08.2017, 16:58  [ТС]
Да, я с Вами полностью согласен, 1BTC = 250 985,88 RUB -> 1 RUB = 1/250 985.88
Но как это применить на коде, ведь, если:
PHP
1
2
3
4
$a = 250985.88; //Получаю курс BTC
$b = 5.796; //Получаю баланс RUB
$result = $b/$a; //Провожу расчёт
echo $result;
То переменная $result будет содержать E число: 2.3092932558597E-5
Задача получить простым способом число с 8-ю знаками, после запятой: 0.00002309

К тому же $a и $b ещё и дробные.

Добавлено через 8 минут
Хотя, если прогнать результат через sprintf('%.8F',$result),
Тогда всё ОК!
Короче, проще простого оказалось, вот код:
PHP
1
2
3
4
$a = 250985.88; //Получаю курс BTC
$b = 5.796; //Получаю баланс RUB
$result = $b/$a; //Провожу расчёт
$result = sprintf('%.8F',$result);//Получаю баланс BTC
Теперь $result равна 0.00002309

И это ещё можно упростить до такого кода:
PHP
1
2
3
$a = 250985.88; //Получаю курс BTC
$b = 5.796; //Получаю баланс RUB
$result = sprintf('%.8F',$b/$a);//Получаю баланс BTC
Вот так я и хотел, просто и элегантно, одной строкой, грубо говоря.

Пользуйтесь, кому понадобиться, спасибо за внимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2017, 16:58
Помогаю со студенческими работами здесь

Найти правый обратный, левый обратный и обратный оператор
Здравствуйте! Если существует, то найти: правый обратный, левый обратный и обратный оператор. l2->l2 A(x)=(0,x1,x2,....) ...

Кодирование вещественных чисел (обратный перевод)
Всем доброго времени суток! Прошу помочь разобраться с данной темой. Мы здесь не используем дополнительный код и прочую галиматью, но тем...

Перевод вещественного числа в обратный код
namespace InversionCode { using System; using System.Diagnostics; using System.Runtime.CompilerServices; ...

Написать обратный перевод из римских цифр в арабские
Помогите написать обратный перевод, из римских в арабские(10-ую систему) function IntToRoman(Value: LongInt): String; const ...

Перевод двоичного числа в прямой и обратный код
Помогите написать программу) Перевод двоичного числа в прямой и обратный код.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru