I tried with double precision and it works, but some rework on existing databases will be needed
let codigo : i32 = 15;
let cst :&str = "000";
let valor : f64 = 0.31;
let valorlive : String = format!("{:.2}", valor);
let valorstr : &str = &valorlive;
//match db.execute( "Insert Into teste2 (Codigo, CST) VALUES ($1, $2, 0.43)", &[&codigo,&cst] //works
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorIBS) VALUES ($1, $2, $3::numeric)", &[&codigo,&cst,&valor] //fail
//works
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorStr) VALUES ($1, $2, $3)", &[&codigo, &cst, &valorlive]
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorStr) VALUES ($1, $2, $3)", &[&codigo, &cst, &valorstr]
match db.execute( "Insert Into teste2 (Codigo, CST, RedutorDP) VALUES ($1, $2, $3)", &[&codigo, &cst, &valor]
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorDP) VALUES ($1, $2, $3::numeric)", &[&codigo, &cst, &valorlive] //fail -> error serializing parameter 2
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorDP) VALUES ($1, $2, $3::numeric(18,2))", &[&codigo, &cst, &valorlive] //fail -> error serializing parameter 2
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorDP) VALUES ($1, $2, $3::numeric)", &[&codigo, &cst, &valorstr] //fail -> error serializing parameter 2
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorDP) VALUES ($1, $2, $3::numeric(18,2))", &[&codigo, &cst, &valorstr] //fail -> error serializing parameter 2
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorR) VALUES ($1, $2, $3)", &[&codigo, &cst, &valor] //fail -> db error
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorR) VALUES ($1, $2, $3)", &[&codigo, &cst, &valorlive] //fail -> db error
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorR) VALUES ($1, $2, $3)", &[&codigo, &cst, &valorstr] //fail -> db error
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorR) VALUES ($1, $2, $3::real)", &[&codigo, &cst, &valor] //fail -> db error
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorR) VALUES ($1, $2, $3::real)", &[&codigo, &cst, &valorlive] //fail -> db error
//match db.execute( "Insert Into teste2 (Codigo, CST, RedutorR) VALUES ($1, $2, $3::real)", &[&codigo, &cst, &valorstr] //fail -> db error
){
Ok(res) => println!("{}", res),
Err(err) => println!("{}", err),
}
}
//create table teste2
// (codigo int,
// cst varchar(20),
// RedutorStr varchar(20),
// RedutorIBS numeric(18,2),
// RedutorDP double precision,
// RetudorR real)
Despite some assumptions, I think it should work with other types as well... 
Thank you for the previous tips