09-03-2011, 04:27 PM
La précision c'est le nombre de chiffres après la virgule avant que PHP n'arrondisse.
La notation scientifique c'est une base 10 pour afficher de façon plus courte les grands nombres.
Les deux n'ont donc strictement rien à voir. Tu mélanges tout et rien ici.
La notation scientifique est complétement normale, et reste un float/int/double à part entière et non un string. On ne met pas de guillemet autour, on peux calculer avec... C'est juste une autre représentation des grands nombres. Il n'y a donc pas de paramètres.
Et quand je parle des deux fonctions, je ne parle pas de la fonction qui prend en compte qu'une moitié des cas et retourne des notices... Je parle de la fonction prises dans les sources de Zend.
La notation scientifique c'est une base 10 pour afficher de façon plus courte les grands nombres.
Les deux n'ont donc strictement rien à voir. Tu mélanges tout et rien ici.
La notation scientifique est complétement normale, et reste un float/int/double à part entière et non un string. On ne met pas de guillemet autour, on peux calculer avec... C'est juste une autre représentation des grands nombres. Il n'y a donc pas de paramètres.
Et quand je parle des deux fonctions, je ne parle pas de la fonction qui prend en compte qu'une moitié des cas et retourne des notices... Je parle de la fonction prises dans les sources de Zend.
/**
* Convert a scientific notation to float
* Additionally fixed a problem with PHP <= 5.2.x with big integers
*
* @param string $value
*/
public static function floatalize($value)
{
$value = strtoupper($value);
if (strpos($value, 'E') === false) {
return $value;
}
$number = substr($value, 0, strpos($value, 'E'));
if (strpos($number, '.') !== false) {
$post = strlen(substr($number, strpos($number, '.') + 1));
$mantis = substr($value, strpos($value, 'E') + 1);
if ($mantis < 0) {
$post += abs((int) $mantis);
}
$value = number_format($value, $post, '.', '');
} else {
$value = number_format($value, 0, '.', '');
}
return $value;
}