[PHP] Pasar de punto a coma en decimales

Tunnecino

Hola buenas,

Necesito pasar de, por ejemplo, 3,497.99 a 3.497,99 sin perder ningún número por el camino. Digo esto por que la función number_format no me sirve, ya que me redondea los decimales, y no quiero eso.

Necesito el mismo número pero con ambos caracteres intercambiados.

Llevo un rato y estoy bloqueado, y lo necesito para ayer, ¿alguna sugerencia?

Gracias de antebraso

Kiroushi

Edit: No he dicho nada. Usa http://es1.php.net/class.numberformatter

eXtreM3

#1 la función number_format tiene precisión de decimales, es el segundo parámetro.

number_format($numero, 2, ',', '.')
1 respuesta
Tunnecino

#3 Lo he tenido que hacer de modo chapucilla. Es que number_format me redondea los decimales, y no quiero eso.

1 respuesta
eXtreM3

#4 así? xd

$num = '3,497.99';
$num = explode(",", $num);
$num = $num[0].$num[1];
echo number_format($num, 2,',','.');
2 respuestas
Tunnecino

#5 Peor,

$price = str_replace(".", "P", $price);
$price = str_replace(",", "C", $price);
$price = str_replace("P", ",", $price);
$price = str_replace("C", ".", $price);
2 respuestas
DarkSoldier

#6 en serio? pensaba que no se podía hacer peor que #5 XDDDDD

1 respuesta
eXtreM3

#7 da una buena solución pues.

1 respuesta
DarkSoldier

#8 k la respuesta sea cancerígena no significa que no sea la que yo haya pensado xD

1 respuesta
eXtreM3

#9 lo de #5 no sirve si el número tiene varios separadores de decimales xd

1 respuesta
Kiroushi

#10 ¿Cómo que "varios separadores de decimales"?

1 respuesta
eXtreM3

#11 10.000.000.000,05

pd: de miles, quería decir de miles *

Makalister

como #6 pero mas bonico

// Intercambio 
$price= '3,497.99';
echo str_replace(array(',','.','*','/'), array('*','/','.',','), $price);
// mas bonico aun para vPHP 5.4+
echo str_replace( [',','.','*','/'], ['*','/','.',','], $price);

me da miedo preguntarte de donde viene el valor 3,497.99 xq si es de tu app lo estas haciendo mal

// Si siempre tiene decimales
$price= '2,333,497.99';
echo preg_replace(array('/,/','/.(\d+)$/'), array('.',',$1'), $price);
eXtreM3

Un valor así puede venir de miles de sitios. No obstante, me uno a la pregunta :si: sólo por curiosidad.

Tunnecino

Precios de Amazon en $ US, y el chico que usa la miniapp necesita ese formato.

Usuarios habituales

  • Tunnecino
  • eXtreM3
  • Makalister
  • Kiroushi
  • DarkSoldier