Добрый день, ребята подскажите реализацию функции умных десятичных чисел, простая реализация округлений не подходит так как цифры могу быть десятизначные а могут и не быть
задача такая что есть расчеты и может быть цифра
1) 0,00025325
2) 0,0000000225
3) 0.02501
и мне нужно в каждом числе показать два символа после нулей, к примеру:
0,00025
0,000000022
0.025
как можно реализовать чтото подобное в одной функции ?
Как я вижу решение, но помоему функция сложновата и хотелось бы проще
public static function numbersAfterDecimalPoint($number)
{
$number = number_format($number, 10, ',', ' ');
$breakUpNumber = explode(",", $number);
if(!isset($breakUpNumber[1])){
return $number;
}
$lang = iconv_strlen($breakUpNumber[1]);
$number = '';
$counter = 0;
for ($i = 0; $i < $lang; $i++){
if($breakUpNumber[1][$i] == '0'){
$number .= $breakUpNumber[1][$i];
}else{
$number .= $breakUpNumber[1][$i];
$counter++;
if($counter == 2){
break;
}
}
}
if($counter == 0){
return number_format($number, 2, ',', ' ');
}
return $breakUpNumber[0].','.$number;
}
preg_replace('/([0-9]*)([.,])(0*)([1-9]{0,2}).*/', '$1$2$3$4', $myNumber);
поскольку вы в своем решении работаете с числами как со строками, то можно просто использовать регулярные выражения
$data = [
0.00025325,
0.0000000225,
0.02501,
0.1
];
foreach($data as $d){
$str = number_format(10, $d, ',', '') ;
if(preg_match('/(\d+)[.,]0*(\d{1,2})/', $str, $matches)){
print_r([$matches[0]]);
}
}
Предложу еще математический вариант без регулярок (в данном случае, когда целая часть равна 0), но он не совсем точен, кажется.
foreach($data as $d){
$l = log10($d);
print_r([ number_format($d, -floor($l)+1, ',', '') ]);
}
у меня получилось таким способом
return preg_replace('/([0-9]*)([.,])(0*)([1-9]{0,2}).*/', '$1$2$3$4', number_format($number, 10, ',', ' '));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, мне нужно подключить некоторые категории (рубрики) в отдельные шаблоны
Есть небольшой проект - сайт с объявлениями, где есть объявление и фотографии к немуЯ расскажу как сделал обработку и хранение фотографий,...
Помогите пожалуйста, есть скрипт и всё такое, он выводит новости из ДБ, мне надо что бы была возможность, добавлять в таблицу лайк, типо имеется...
Есть строкаЕсть массив, в котором записанно все вот так: "a" => "****",