@@ -195,27 +195,27 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
195195 FloatValue :: new ( value)
196196 } ) ;
197197 b. rule_3 ( "number dot number" ,
198- number_check ! ( |number : & NumberValue | !number . prefixed( ) ) ,
198+ integer_check ! ( |integer : & IntegerValue | !integer . prefixed) ,
199199 b. reg ( r#"virgule|point"# ) ?,
200- number_check ! ( |number : & NumberValue | !number . suffixed( ) ) ,
200+ integer_check ! ( |integer : & IntegerValue | !integer . suffixed) ,
201201 |a, _, b| {
202- let power = b. value ( ) . value ( ) . to_string ( ) . chars ( ) . count ( ) ;
203- let coeff = 10.0_f64 . powf ( -1.0 * power as f64 ) ;
202+ let value: f64 = format ! ( "{}.{}" , a. value( ) . value, b. value( ) . value) . parse ( ) ?;
204203 Ok ( FloatValue {
205- value : b . value ( ) . value ( ) * coeff + a . value ( ) . value ( ) ,
204+ value,
206205 ..FloatValue :: default ( )
207206 } )
208207 } ) ;
209208 b. rule_4 ( "number dot zero ... number" ,
210- number_check ! ( |number : & NumberValue | !number . prefixed( ) ) ,
209+ integer_check ! ( |integer : & IntegerValue | !integer . prefixed) ,
211210 b. reg ( r#"virgule|point"# ) ?,
212211 b. reg ( r#"(?:(?:z[eé]ro )*(?:z[eé]ro))"# ) ?,
213- number_check ! ( |number : & NumberValue | !number . suffixed( ) ) ,
212+ integer_check ! ( |integer : & IntegerValue | !integer . suffixed) ,
214213 |a, _, zeros, b| {
215- let power = zeros. group ( 0 ) . split_whitespace ( ) . count ( ) + b. value ( ) . value ( ) . to_string ( ) . chars ( ) . count ( ) ;
216- let coeff = 10.0_f64 . powf ( -1.0 * power as f64 ) ;
214+ let zeros_string = std:: iter:: repeat ( "0" ) . take ( zeros. group ( 0 ) . split_whitespace ( ) . count ( ) ) . collect :: < String > ( ) ;
215+ println ! ( "{:?}" , format!( "{}.{}{}" , a. value( ) . value, zeros_string, b. value( ) . value) ) ;
216+ let value: f64 = format ! ( "{}.{}{}" , a. value( ) . value, zeros_string, b. value( ) . value) . parse ( ) ?;
217217 Ok ( FloatValue {
218- value : b . value ( ) . value ( ) * coeff + a . value ( ) . value ( ) ,
218+ value,
219219 ..FloatValue :: default ( )
220220 } )
221221 } ) ;
0 commit comments