@@ -10,23 +10,19 @@ module TimeValueFractional
1010 def apply_seconds_precision ( value )
1111 return value if !value . respond_to? ( fractional_property ) || value . send ( fractional_property ) . zero?
1212 value . change fractional_property => seconds_precision ( value )
13-
14- millis = seconds_precision ( value ) . to_i
15- value = value . change fractional_property => millis % fractional_operator
16- value + millis / fractional_operator
1713 end
1814
1915 def seconds_precision ( value )
2016 return 0 if fractional_scale == 0
21- seconds = value . send ( fractional_property ) . to_d / fractional_operator . to_d
22- seconds = ( ( seconds / fractional_precision ) . round * fractional_precision ) . round ( fractional_scale )
17+ seconds = value . send ( fractional_property ) . to_f / fractional_operator . to_f
18+ seconds = ( ( seconds * ( 1 / fractional_precision ) ) . round / ( 1 / fractional_precision ) ) . round ( fractional_scale )
2319 ( seconds * fractional_operator ) . round ( 0 ) . to_i
2420 end
2521
2622 def quote_fractional ( value )
2723 return 0 if fractional_scale == 0
2824 frac_seconds = seconds_precision ( value )
29- seconds = ( frac_seconds . to_d / fractional_operator . to_d ) . round ( fractional_scale )
25+ seconds = ( frac_seconds . to_f / fractional_operator . to_f ) . round ( fractional_scale )
3026 seconds . to_d . to_s . split ( '.' ) . last . to ( fractional_scale -1 )
3127 end
3228
@@ -43,7 +39,7 @@ def fractional_operator
4339 end
4440
4541 def fractional_precision
46- BigDecimal ( '0.003333' )
42+ 0.00333
4743 end
4844
4945 def fractional_scale
@@ -72,7 +68,7 @@ def fractional_digits
7268 end
7369
7470 def fractional_precision
75- BigDecimal ( ' 0.0000001' )
71+ 0.0000001
7672 end
7773
7874 def fractional_scale
0 commit comments