Foros del Web » Programando para Internet » PHP »

Separador de decimales

Estas en el tema de Separador de decimales en el foro de PHP en Foros del Web. Cómo cambiar el separador de decimales '.' por ','? Mi problema es que al comprovar si un string es numerico uso la función is_numeric() que ...
  #1 (permalink)  
Antiguo 07/09/2004, 09:36
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Separador de decimales

Cómo cambiar el separador de decimales '.' por ','?

Mi problema es que al comprovar si un string es numerico uso la función is_numeric() que coge el separador de decimales en funcion de lo que ponga en localenv(), que por defecto es el punto.

En españa, el separador de decimales es la coma ',' y por tanto aunque cambie la configuración mediante setlocale(LC_NUMERIC,'es_ES'), el separador de decimales no cambia en mi configuración.

Alguno de ustedes se ha encontrado con eso.

Gracias

Codigo para comprovar esto:
Código PHP:
<?

$var
[] = '27,60';
$var[] = '27.61';
$var[] = 27.62;

echo(
'<pre>');
print_r(localeconv());
echo(
'</pre>');

foreach (
$var as $val) {
    if (
is_numeric($val)) echo($val.' és numerico <br>');
}
?>
  #2 (permalink)  
Antiguo 07/09/2004, 09:57
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 19 años, 11 meses
Puntos: 2
Por qué no haces un is_numeric(str_replace(",", ".", $val)) . Así te funcionaría
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #3 (permalink)  
Antiguo 07/09/2004, 11:25
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
Pues pq por ese motivo hay la configuración local, para que no tengas que hacer substituciones.

Que passaria si la aplicación fuera internacional, quantos str_replace tendrias que ponele? Muchos.

Esta no es la solución, gracias
  #4 (permalink)  
Antiguo 07/09/2004, 13:04
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 19 años, 11 meses
Puntos: 2
Yo creo que setLocale sólo funciona con los números y no con las cadenas
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #5 (permalink)  
Antiguo 07/09/2004, 13:22
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 3 meses
Puntos: 0
is_numeric es la única funcion que sirve para ver si un string numérico es numerico.
Para comprovar si una cadena es numerico, usan la configuración de localeconv();

Compruebalo
Código PHP:
<?

$var
[] = '27,60';
$var[] = '27.61';
$var[] = 27.62;

echo(
'<pre>');
print_r(localeconv());
echo(
'</pre>');

setlocale(LC_NUMERIC,'es');

echo(
'<pre>');
print_r(localeconv());
echo(
'</pre>');

foreach (
$var as $val) {
    if (
is_numeric($val)) echo($val.' és numerico <br>');
}
?>
Resultado:
Cita:
Array
(
[decimal_point] => .
[thousands_sep] =>
[int_curr_symbol] =>
[currency_symbol] =>
[mon_decimal_point] =>
[mon_thousands_sep] =>
[positive_sign] =>
[negative_sign] =>
[int_frac_digits] => 127
[frac_digits] => 127
[p_cs_precedes] => 127
[p_sep_by_space] => 127
[n_cs_precedes] => 127
[n_sep_by_space] => 127
[p_sign_posn] => 127
[n_sign_posn] => 127
[grouping] => Array
(
)

[mon_grouping] => Array
(
)

)

Array
(
[decimal_point] => ,
[thousands_sep] =>
[int_curr_symbol] =>
[currency_symbol] =>
[mon_decimal_point] =>
[mon_thousands_sep] =>
[positive_sign] =>
[negative_sign] =>
[int_frac_digits] => 127
[frac_digits] => 127
[p_cs_precedes] => 127
[p_sep_by_space] => 127
[n_cs_precedes] => 127
[n_sep_by_space] => 127
[p_sign_posn] => 127
[n_sign_posn] => 127
[grouping] => Array
(
[0] => 3
)

[mon_grouping] => Array
(
)

)

27,60 és numerico
27,62 és numerico
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:52.