2017-01-12 6 views
-1

У меня возникли проблемы устранения с помощью number_format, 06()number_format(), чтобы исключить .06

, что я хочу сделать, это:

56,00 => 56

56,10 => 56,10

56.06 => 56

Я сделал это с регулярным выражением, но я не могу его устранить, возможно, мое утверждение неверно.

$num = 50.06; 
$num = preg_replace("/\.0*$/",'',$num); 

мне нужно ваша помощь

Заранее спасибо

+0

Это правильно, что вы кладете число первых в '$ num', а затем пытается заменить его на '$ x'? –

+0

Не могли бы вы объяснить логику? Почему он сохраняет фракцию, когда она '.10', но не тогда, когда она' .06'? – Barmar

+0

привет, извините. Это $ num, а не $ x. моя вина. уже отредактировал вопрос. –

ответ

1

Регулярное выражение:

/\.0[0-9]+/ 

Работа DEMO.

Итак:

$num1 = 50.06; 
$num1 = preg_replace("/\.0[0-9]+/",'',$num1); //50 

$num2 = 50.10; 
$num2 = preg_replace("/\.0[0-9]+/",'',$num2); //50.1 

Ссылка:

+0

спасибо, он работает. –

+0

Рад помочь. :) – paolobasso

0

Правильное регулярное выражение \.0[0-9]{1}$

Последние пары из preg_replace составляет $ Num

+0

не работает. в любом случае спасибо. –

+0

Я забыл \ –

0

Это может быть глупым, поскольку я устал и готов кочан, но:

if(($num - intval($num)) > .1) { 
    $num = number_format($num, 2); 
} else { 
    $num = number_format($num, 0); 
} 
+0

Это не сделает желаемую вещь для '56.06'. – Barmar

+0

@ Бармар: Ого, подождите, что? Я просто это видел. – AbraCadaver

+0

Почти там, измените его на '> ='. Хотя это может не работать из-за ошибок округления. – Barmar

 Смежные вопросы

  • Нет связанных вопросов^_^