2009-01-29 6 views

Respuesta

9

Parece que ronda fue el problema. Lo cambié con number_format() y esto hace el trabajo bien. Gracias Aron y Paul por las respuestas.

+0

Si está satisfecho con las respuestas, puede considerar marcar una como "Aceptado" –

+0

... y considerar comentar la respuesta en lugar de agregar una nueva respuesta como comentario – shfx

+0

bien, estoy nuevo, pero lo tendré en cuenta – Kennethvr

2

posiblemente relacionados con este bug report, lo que podría intentar

printf("%d", $myvar); 
7

relacionados con su pregunta, yo también me encontré con this comment en el sitio web de PHP.

interruptores de PHP de la norma decimal notación para la notación exponencial para cierta "especial" flotadores. Se puede ver una lista parcial de estos "especiales" valores con esto:

for($tmp = 0, $i = 0; $i < 100; $i++) 
{ 
    $tmp += 100000; 
    echo round($tmp),"\n"; 
} 

Por lo tanto, si se agregan dos flotadores, terminar con un valor "especial", por ejemplo, 1.2E + 6, luego poner ese valor sin modificar en una consulta de actualización para almacenar el valor en una columna decimal , digamos que es probable obtener una transacción fallida, ya que la base de datos verá "1.2E + 6" como varchar datos, no decimal. Del mismo modo, es probable que obtenga un error de validación XSD si pone el valor en xml.

Tengo que ser honesta: esta es una de las cosas más extrañas que he visto en cualquier idioma en más de 20 años de codificación, y es un dolor colosal a trabajo alrededor.

Parece que todavía no ha habido una solución "real", pero a juzgar por los comentarios en el bug report Paul Dixon referered to anterior, su solución parece funcionar.

Cuestiones relacionadas