区域设置设置为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
因此,我可以看到只有语言环境效果的视图。 这是否意味着我应该在运行十进制值之前始终使用str_replace(array(',','.'), '.', $input)
?