#php
#php
Вопрос:
Мне нужно отформатировать значения моей валюты, чтобы удалить точки и запятые и увеличить 00 в значениях, отличных от центов, это лучший способ?
str_replace(['.',','],'', number_format('67.50',2)); return 6750
str_replace(['.',','],'', number_format('112.35',2)); return 11235
str_replace(['.',','],'', number_format('1001',2)); return 100100
Комментарии:
1. Я не понимаю вашего вопроса. Почему 1001 равно 100100?
2. @Wimanicesir Это будет 1001.00, поэтому форматируется с 2 десятичными знаками.
3. Поскольку у вас уже есть доступные значения, скорее
double
всего, в любом случае как значение, почему бы просто не использовать$var*100;
? Зачем обходной путь черезnumber_format()
иstr_replace
?4. Прочитайте о
number_format()
. Ни в чем нет необходимостиstr_replace()
.5. @axiac Спасибо! Я пропустил это в документации, но я использовал number_format($number, 2, «, «)
Ответ №1:
Использование BCMath расширения PHP напрямую.
Исходный код:
<?php
$num = bcmul('123.45', 100);
var_dump($num);
$num = bcmul('123.456', 100);
var_dump($num);
// The thrid parameter is used to set the number of digits after the decimal place in the result.
$num = bcmul('123.456', 100, 1);
var_dump($num);
$num = bcmul('123456.78', 100);
var_dump($num);
Вывод:
string(5) "12345"
string(5) "12345"
string(7) "12345.6"
string(8) "12345678"
Для получения дополнительной информации см. https://www.php.net/manual/en/function.bcmul.php