diff --git a/qupulse/utils/types.py b/qupulse/utils/types.py index 2d2267e97..0aeabd06a 100644 --- a/qupulse/utils/types.py +++ b/qupulse/utils/types.py @@ -219,7 +219,7 @@ def from_float(cls, value: float, absolute_error: typing.Optional[float] = None) elif absolute_error > 1: raise ValueError('absolute_error needs to be <= 1') else: - return cls(qupulse_numeric.approximate_double(value, absolute_error, fraction_type=cls._InternalType)) + return cls(qupulse_numeric.approximate_double(value, absolute_error, fraction_type=cls._to_internal)) @classmethod def from_fraction(cls, numerator: int, denominator: int) -> 'TimeType': diff --git a/tests/utils/time_type_tests.py b/tests/utils/time_type_tests.py index 87d201c28..6273d501c 100644 --- a/tests/utils/time_type_tests.py +++ b/tests/utils/time_type_tests.py @@ -97,6 +97,8 @@ def assert_fraction_time_from_float_with_precision_works(self, time_type): fractions.Fraction(1)) self.assertEqual(time_type.from_float(2.50000000000008, absolute_error=1e-10), time_type.from_fraction(5, 2)) + self.assertEqual(time_type.from_float(9926.666666667, absolute_error=1e-9), + time_type.from_fraction(29780, 3)) def test_fraction_time_from_float_with_precision(self): self.assert_fraction_time_from_float_with_precision_works(qutypes.TimeType)