Я пытаюсь найти быстрый способ удалить zero decimals
из числовых значений, как это:
echo cleanNumber('125.00');
// 125
echo cleanNumber('966.70');
// 966.7
echo cleanNumber(844.011);
// 844.011
Существует ли какой-то оптимизированный способ сделать это?
Ответы:
$num + 0
делает трюк.Внутренне это равносильно приведению к плавающему
(float)$num
или,floatval($num)
но я нахожу это проще.источник
floatval()
это делает.floatval
- всплеск . Я бы сказал, что использование его в качестве средства форматирования десятичных чисел не очень очевидно или чисто.//COMMENT
Вы могли бы просто использовать
floatval
функциюисточник
Это то, что я использую:
NB. Предполагается,
.
что это десятичный разделитель. Преимущество этого метода в том, что он будет работать с произвольно большими (или маленькими) числами, так как здесь нет приведения с плавающей точкой. Это также не превратит числа в научные обозначения (например, 1.0E-17).источник
Простое добавление
+
в строковую переменную приведет к приведению типа (float) и удалит нули:источник
Для всех, кто заходит на этот сайт и сталкивается с такой же проблемой с запятыми, измените:
чтобы:
Если нужно удалить два нуля , измените на:
Подробнее здесь: номер PHP: десятичная точка видна только при необходимости
источник
Если вы хотите удалить нулевые цифры непосредственно перед отображением на странице или шаблоне.
Вы можете использовать функцию sprintf ()
источник
Вы должны разыгрывать свои числа как числа с плавающей точкой, что сделает это за вас.
Результатом этого будет то, что вы ищете.
источник
(float)'0.1234567890124567890123456789'
становится0.12345678901246
.Нет ничего, что нельзя исправить с помощью простого регулярного выражения;)
http://xkcd.com/208/
источник
0
с, например, в"100"
. Также не в состоянии раздеться0
сек от"100.010"
.$x = preg_replace("/(\.0*$)|((?<=\.\d*)0+$)/",'',$x);
Типа к
float
.источник
Из-за этого вопрос старый. Во-первых, я сожалею об этом.
Вопрос касается числа xxx.xx, но в случае, если это x, xxx.xxxxx или десятичный разделитель разностей, такой как xxxx, xxxx, может быть сложнее найти и удалить нулевые цифры из десятичного значения.
А вот и код для теста.
источник
Будьте осторожны с добавлением +0.
Результат этого 1.
источник
Странно, когда я получаю номер из базы данных с типом «float» и если мой номер - ex. 10000 когда я его плаваю, становится 1.
Я проверил все решения выше, но не сработал.
источник
источник
Сложно, но работает:
Приведенные выше решения являются оптимальным способом, но если вы хотите иметь свое собственное, вы можете использовать это. То, что делает этот алгоритм, он запускает в конце строки и проверяет , равен ли его 0 , если он установлен, то устанавливает пустую строку, а затем переходит к следующему символу сзади, пока последний символ не будет > 0
источник
Ты можешь использовать:
источник
Вот мое небольшое решение ... Может включать в класс и установить переменные
private $ dsepparator = '.'; // десятичные числа private $ tsepparator = ','; // тысяча
Это может быть установлено конструктором и изменено на lang пользователей.
источник
Это моё решение. Я хочу сохранить возможность добавлять разделитель тысяч
источник
Это простая однострочная функция, использующая rtrim, разделитель сохранения и десятичную точку:
источник
Я нашел это решение является лучшим:
источник
Просто и точно!
источник
Окончательное решение: единственный безопасный способ - использовать регулярные выражения:
это будет работать в любом случае
источник
Следующее гораздо проще
источник
источник
Этот код удалит ноль после точки и вернет только две десятичные цифры.
$ номер = 1200.0000;
str_replace ('. 00', '', number_format ($ number, 2, '.', ''));
Выход будет: 1200
источник