The decimal character in the Float Validator class depends on the locale used in the application. Try adding the locale as an option like this:
$factory->createInput( array(
'name' => 'precio',
'required' => true,
'validators' => array(
array(
'name' => 'Float',
'options' => array(
'min' => 0,
'locale' => '<my_locale>'
),
),
),
) );
If you don't set the locale, the Float class gets the intl.default_locale defined in php.ini