diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py
index eeb760a5f6cc23013313d97016909b908753205a..3077e0d384903b9e5ddf494d8d20817234c797d9 100755
--- a/tools/mpy-tool.py
+++ b/tools/mpy-tool.py
@@ -347,8 +347,10 @@ class RawCode:
                     n = struct.unpack('<I', struct.pack('<f', self.objs[i]))[0]
                     n = ((n & ~0x3) | 2) + 0x80800000
                     print('    (mp_rom_obj_t)(0x%08x),' % (n,))
-                    print('#else')
-                    print('#error "MICROPY_OBJ_REPR_D not supported with floats in frozen mpy files"')
+                    print('#elif MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_D')
+                    n = struct.unpack('<Q', struct.pack('<d', self.objs[i]))[0]
+                    n += 0x8004000000000000
+                    print('    (mp_rom_obj_t)(0x%016x),' % (n,))
                     print('#endif')
                 else:
                     print('    MP_ROM_PTR(&const_obj_%s_%u),' % (self.escaped_name, i))