periodicos periodico pasar números numeros mixto fracciones fraccion ejercicios decimales convertir como php

php - periodico - ¿Por qué la constante `FILTER_VALIDATE_NUMBER_FLOAT` elimina el carácter de lugar decimal?



numeros periodicos a fraccion (4)

$quantity = filter_input(INPUT_GET, ''quantity'', FILTER_SANITIZE_NUMBER_FLOAT);

Entrada: 100.25

Salida: 10025

¿Cómo puedo preservar el . ¿personaje?


Al leer la documentación http://www.php.net/manual/en/filter.filters.sanitize.php muestra que FILTER_SANITIZE_NUMBER_FLOAT tiene el siguiente efecto:

Elimine todos los caracteres excepto los dígitos, + - y opcionalmente, eE.

Dando vuelta a esta oración algo mal formada:

Esto elimina todos los caracteres de la entrada excepto los dígitos (0-9). Con las banderas opcionales, es posible también permitir los caracteres. (punto), (coma) e (exponente) y E (exponente)

Entonces, su ejemplo de código no se está multiplicando, pero está eliminando el punto decimal.

Solución :

FILTER_FLAG_ALLOW_FRACTION establecer la opción FILTER_FLAG_ALLOW_FRACTION en su llamada de función para permitir el punto decimal:

$quantity = filter_input(INPUT_GET, ''quantity'', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);


Alternativamente, use FILTER_VALIDATE_FLOAT , con una nota de retroalimentación rápida si no coincide:

$quantity = (filter_input(INPUT_GET, ''quantity'', FILTER_VALIDATE_FLOAT)) ?filter_input(INPUT_GET, ''quantity'', FILTER_VALIDATE_FLOAT): "Invalid Decimal Number"; print_r($quantity);


Prueba esto...

$quantity = filter_input( INPUT_GET, ''quantity'', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION );

CodePad .


Usted quiere:

$quantity = filter_var(100.25, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); print_r($quantity);

http://codepad.org/ch66qJru

Woops ... Querrá seguir usando filter_input como lo tiene actualmente, así como los mismos dos primeros argumentos. Terminé usando filter_var para poder probarlo en el teclado y olvidé cambiarlo de nuevo: P