je le script suivant:En utilisant setlocale() ne modifie pas le numéro phps conversions
<?php
$test = "2.5";
echo (float)$test;
echo "\n";
$r = setlocale(LC_ALL, "da_DK.UTF8");
setlocale(LC_ALL, NULL);
print_r(localeconv());
echo "\n";
echo (float)$test;
echo "\n";
echo (float)"2,5";
echo "\n";
?>
qui génère la sortie suivante:
2.5
Array
(
[decimal_point] => ,
[thousands_sep] => .
[int_curr_symbol] => DKK
[currency_symbol] => kr
[mon_decimal_point] => ,
[mon_thousands_sep] => .
[positive_sign] =>
[negative_sign] => -
[int_frac_digits] => 2
[frac_digits] => 2
[p_cs_precedes] => 1
[p_sep_by_space] => 2
[n_cs_precedes] => 1
[n_sep_by_space] => 2
[p_sign_posn] => 4
[n_sign_posn] => 4
[grouping] => Array
(
[0] => 3
[1] => 3
)
[mon_grouping] => Array
(
[0] => 3
[1] => 3
)
)
2,5
2
La dernière ligne qui se lit 2
- Je voudrais Je m'attendais à lire 2,5
- et autant que je peux voir sur la documentation PHP, il devrait.
Si le deuxième appel à setlocale
est omis alors la sortie de localeconv()
est incohérente avec la locale danois - pour des raisons qui ne sont pas claires pour moi.
malheureusement typecasting _is_ affecté par setlocale: echo (setlocale (LC_ALL, array ('de_DE', 'deu_deu'))); $ p = 3,1412592; var_dump ($ p); var_dump ((chaîne) $ p); var_dump ((float) (chaîne) $ p); – andig