ロケールはsetlocale(LC_ALL, 'ru_RU.UTF-8')
に設定されています。小数点は,
です。ロケール小数点と型キャストによる不思議な動作
文字列が入力されています(たとえば、11,25
)。 倍精度にキャストするときに$double = (double)$double;
精度が低下しています。
setlocale(LC_ALL, 'ru_RU.UTF-8');
$input = '11,25';
var_dump((double)$input); //11
$linfo = localeconv();
$input = '11'.$linfo['decimal_point'].'25';
var_dump((double)$input); //11
$input = '11.25';
var_dump((double)$input); //11,25
だから、私はロケールエフェクトだけを見ることができます。 10進数値を操作する前に、常にstr_replace(array(',','.'), '.', $input)
にする必要がありますか?