number_format без округления

Есть ли альтернатива 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 от длины, чтобы найти число десятичных чисел, вы можете использовать внешний вид, как бы я ни думал, что производительность будет хуже. Возможно, потребуется некоторое тестирование, и я уверен, что будут работать другие регулярные выражения.