Necesito agregar, multiplicar y comparar valores de moneda en PHP y necesito estar seguro de que es exacto hasta un centavo.¿La mejor práctica para trabajar con valores de moneda en PHP?
Una forma es almacenar todo en float, usar round antes y después de cada operación y épsilon de máquina mental cuando se compara por igualdad. Muy engorroso.
Otra forma es almacenar todo como centavos en tipos de datos enteros, además de recordar convertir de ida y vuelta cada vez que trabajo con la base de datos (mysql, donde uso el tipo de datos decimales). Inelegante, y muchas trampas de error, imho.
Otra forma es inventar mi propio "tipo de datos", almacenar todos los valores en cadenas ("34.12") y crear mis propias funciones de reemplazo matemático. Esta función convertiría el valor en enteros internamente, hacer el cálculo y dar salida al resultado de nuevo a strings. Sorprendentemente complicado, imho.
Mi pregunta: ¿cuál es la mejor práctica para trabajar con valores de moneda en PHP? Gracias!
Esto no es, simplemente, la mejor práctica y muy malo Consejo. Por favor, por supuesto, encapsule las funciones que funcionan con funciones matemáticas de precisión arbitraria, pero por favor no siga los consejos anteriores. La mejor respuesta es por Andrew Dunn. –