2012-05-25 3 views
0

Я хочу показать цену на моей первой странице. Но формат числа требуемых естьФормат номера в PHP

  • Поступил цена: 10000 Дисплей: 10000
  • Поступил цена: 10000,10 Дисплей: 10,000.1
  • Поступил цена: 10000,01 Дисплей: 10,000.01

если я я использую следующий код

echo number_format ($price,2,'.',','); 

Но при этом результат отображается таким образом.
Поступил цена: 10000 Дисплей: 10.000.00

Пожалуйста, помогите мне решить эту проблему

ответ

3

Там есть функция в PHP называется money_format().

Посмотрите на него на http://php.net/manual/en/function.money-format.php

+0

как же money_format помочь с этим? Он также не учитывает переменные десятичные числа. все равно нужно указать, сколько вы хотите в спецификаторе формата. – barryhunter

1

Конечно, от ясности и непротиворечивости точки зрения, имея 2 цифры после запятой имеет смысл, особенно при показе цены.

@barryhunter сделал действительную точку, и следующее не работает.

echo rtrim(number_format($price,2,'.',','),'0.'); 

Однако это делает:

trim(trim(number_format($price,2,'.',','),'0'),'.'); 

Посмотрите:

<?php 
$a=array('10000.00','10000.10','10000.01'); 

foreach ($a as $price) 
{ 
    echo $price.' - '.rtrim(rtrim(number_format($price,2,'.',','),'0'),'.')."\n"; 
} 
?> 

$> php -f t.php 
10000.00 - 10,000 
10000.10 - 10,000.1 
10000.01 - 10,000.01 
+1

Это не будет работать, разделит конечные нули на фактическое число, поэтому, когда $ price = 10000; он выведет «10», а не то, что нужно! – barryhunter

+0

@barryhunter - Хорошая точка. Мои извинения. ИГНОРИЙ МОЙ ОТВЕТ. НЕТ РАБОТЫ! – DaveyBoy

+0

OK. Я подумал и разобрался в своем более раннем ответе. Престижность @barryhunter - спасибо! – DaveyBoy

1

Вы установили количество decimial точек до 2 так, поэтому у вас есть 10000,00. Постарайтесь пользователя таким образом:

echo number_format ($price,1,'.',','); 

А также лучше использовать money_format, если вы работаете с денежными значениями.

+1

OP хочет 2 десятичных точки для '10,000.01' и 1 десятичную точку для' 10,000.1'. – flowfree

0

Лично я бы

echo number_format($price,floor($price)==$price?0:2,'.',','); 

показывая цену как 10,000.1 выглядит странно для меня.

Но если вы действительно должны

$bits = explode('.',$price); 
echo number_format($price,strlen($bits[1]),'.',','); 

(редактировать) В ответ на комментарий, это работает для меня ...

<?php 
$a=array(10000.00,10000.10,10000.01); 

foreach ($a as $price) 
{ 
    $bits = explode('.',$price); 
    echo $price.' - '.number_format($price,strlen($bits[1]),'.',',')."\n"; 
} 
?> 

$ php t.php 
10000 - 10,000 
10000.1 - 10,000.1 
10000.01 - 10,000.01 
+0

burryhunter. Спасибо за ваш ответ. но, к сожалению, он не работает для 10000.01 или 10000.1 –

+0

Обновлен ответ, чтобы показать ему слова для меня ... – barryhunter

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