diff --git a/cf_units/__init__.py b/cf_units/__init__.py index f43b2e96..5a56a513 100644 --- a/cf_units/__init__.py +++ b/cf_units/__init__.py @@ -1738,10 +1738,8 @@ def convert(self, value, other, ctype=FLOAT64, inplace=False): result, self.cftime_unit, self.calendar) result = cftime.date2num( result_datetimes, other.cftime_unit, other.calendar) - # Preserve the datatype of the input array if it was float32. - if (isinstance(value, np.ndarray) and - value.dtype == np.float32): - result = result.astype(np.float32) + if isinstance(value, np.ndarray) and np.issubsctype(value.dtype, np.floating): + result = result.astype(value.dtype) else: try: ut_converter = _ud.get_converter(self.ut_unit, diff --git a/cf_units/tests/unit/unit/test_Unit.py b/cf_units/tests/unit/unit/test_Unit.py index fd942a4c..14e14c39 100644 --- a/cf_units/tests/unit/unit/test_Unit.py +++ b/cf_units/tests/unit/unit/test_Unit.py @@ -1,4 +1,4 @@ -# (C) British Crown Copyright 2015 - 2020, Met Office +# (C) British Crown Copyright 2015 - 2021, Met Office # # This file is part of cf-units. #