sprintf('%f',$ret)
no funciona, devuelve 0.000000
. ¿Rebosar?
sprintf
funciona, sin embargo, se pierde algo de razón aquí.
0.000000
no se desborda. Es solo que sprintf
para el modificador %f
usa 6 dígitos por defecto. También tenga cuidado de que %f
tenga conocimiento de la configuración regional, %F
es probablemente el más adecuado.
Es posible que desee utilizar más dígitos, p. digamos 4 000 000 (cuatro millones):
$ php -r "printf('%.4000000F', 1*0.000000001);"
Notice: printf(): Requested precision of 4000000 digits was truncated to PHP maximum of 53 digits in Command line code on line 1
Call Stack:
0.0001 319080 1. {main}() Command line code:0
0.0001 319200 2. printf() Command line code:1
0.00000000100000000000000006228159145777985641889706869
Como muestra este ejemplo, no sólo existe un valor común (6 dígitos), sino también un máximo (probablemente dependía de la PHP sistema informático se ejecuta en), aquí truncado a 53 dígitos en mi caso como muestra la advertencia.
Debido a su pregunta diría que desea mostrar:
0.000000001
Cuáles son nueve dígitos, por lo que necesita para escribir de esa manera:
sprintf('%.9F',$ret)
Sin embargo, es posible que desee para hacer esto:
rtrim(sprintf('%.20F', $ret), '0');
que eliminará los ceros de la derecha después:
0.000000001
Espero que esto sea útil.
eres el jefe. estado buscando esto en internet. – Peibol
Después de encontrar esta respuesta, dedico algo de tiempo a la investigación y esta es la mejor respuesta que existe. Puedes usarlo libremente chicos. – Kainax
Usar 'rtrim' en la parte superior de' sprintf' funciona como un amuleto. –