Формат чисел с str_replace

#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