Есть ли альтернатива number_format
в PHP, которая позволяет мне выбирать тысячи и десятичный разделитель, сохраняя число десятичных знаков? Например, что-то вроде этого:
number_format_alternative( '1234.617', ',', '.' ); >1 234,617
но
number_format_alternative( '120.0', ',', '.' ); >120.0
Я понимаю, что я мог достичь почти то же самое, используя смехотворно большое количество десятичных знаков и обрезая все нули справа, хотя второй пример будет выглядеть так:
number_format_alternative( 120.0, ',', '.' ); >120
edit: Это то, что я закончил:
function numberOfDecimals( $number ) { return strlen(strstr(rtrim(sprintf('%.10F', $number), '0'), '.'))-1; }
Поскольку вы вводите номер функции в качестве строки, вы можете использовать регулярное выражение, чтобы увидеть, сколько цифр после десятичной точки представлено в виде. в этом случае, а затем выполните number_format
с параметром $decimals
установленным на номер, который вы только что рассчитали.
Одно регулярное выражение, которое будет работать, будет \.\d+
а затем минус 1 от длины, чтобы найти число десятичных чисел, вы можете использовать внешний вид, как бы я ни думал, что производительность будет хуже. Возможно, потребуется некоторое тестирование, и я уверен, что будут работать другие регулярные выражения.