No estoy familiarizado con PHP en absoluto y tenía una pregunta rápida.
Tengo 2 variables pricePerUnit
y InvoicedUnits
. Aquí está el código que establece estos valores:
$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Si saco esto, obtengo los valores correctos. Digamos 5000
unidades facturadas y 1.00
por precio.
Ahora, necesito mostrar la cantidad total gastada. Cuando multiplico estos dos juntos, no funciona (como se esperaba, son cadenas).
Pero no tengo ni idea de cómo analizar / convertir / convertir variables en PHP.
¿Qué tengo que hacer?
VARCHAR>11
en longitud ... todavía no he definido exactamente por qué.Desea que la no-localidad cuenta
floatval
la función :Ejemplo:
fuente
(float)
conversión en el primer servidor a "," y en el segundo a ","Bueno, si el usuario escribe 1,00,000, floatvar mostrará un error. Entonces -
Esto es mucho más confiable.
Uso:
fuente
$string=preg_replace("/[^0-9\.\-]/","",$string);
Lidiar con el marcado en flotantes no es una tarea trivial. En la notación inglesa / americana, formatea mil más
46*10-2
:Pero en Alemania, cambiarías la coma y el punto:
Esto hace que sea realmente difícil adivinar el número correcto en aplicaciones en varios idiomas.
Sugiero encarecidamente utilizar
Zend_Measure
Zend Framework para esta tarea. Este componente analizará la cadena a un flotante según el idioma del usuario.fuente
intl
extensión.Utilice esta función para emitir un valor flotante desde cualquier tipo de estilo de texto:
Esta solución no depende de ninguna configuración regional. Por lo tanto, para la entrada del usuario, los usuarios pueden escribir valores flotantes de la forma que deseen. Esto es realmente útil, por ejemplo, cuando tiene un proyecto que está solo en inglés, pero personas de todo el mundo lo están usando y es posible que no tengan en cuenta que el proyecto quiere un punto en lugar de una coma para los valores flotantes. Puede agregar javascript y obtener la configuración predeterminada de los navegadores, pero aún así muchas personas establecen estos valores en inglés, pero aún escriben 1,25 en lugar de 1,25 (especialmente, pero no se limitan a la industria de la traducción, investigación y TI)
fuente
Me estaba encontrando con un problema con la forma estándar de hacer esto:
Si no hay un número válido, el analizador no debería devolver un número, debería arrojar un error. (Esta es una condición que estoy tratando de detectar en mi código, YMMV)
Para solucionar esto, he hecho lo siguiente:
Luego, antes de seguir procesando la conversión, puedo verificar y devolver un error si no hubo un análisis válido de la cadena.
fuente
Si necesita manejar valores que no se pueden convertir por separado, puede usar este método:
fuente
puede seguir este enlace para saber más sobre cómo convertir una cadena / número en número / flotante / decimal en PHP. AQUÍ ES LO QUE DICE ESTE ENLACE ...
Método 1: Uso de la función number_format (). La función number_format () se usa para convertir una cadena en un número. Devuelve el número formateado en caso de éxito; de lo contrario, da E_WARNING en caso de error.
Método 2: Uso de conversión de tipos: la conversión de tipos puede convertir directamente una cadena en un tipo primitivo flotante, doble o entero. Esta es la mejor forma de convertir una cadena en un número sin ninguna función.
Método 3: Uso de la función intval () y floatval (). Las funciones intval () y floatval () también se pueden usar para convertir la cadena en sus valores enteros y flotantes correspondientes, respectivamente.
Método 4: sumando 0 o realizando operaciones matemáticas. El número de cadena también se puede convertir en un número entero o flotante agregando 0 con la cadena. En PHP, al realizar operaciones matemáticas, la cadena se convierte en un entero o flotante implícitamente.
fuente