Тип данных Python float
действительно использует с двойной точностью (64 бит). Тем не менее, для моей конкретной реализации (которая передает значения с типом значений через OSC), я хотел бы различать значения, которые могут быть представлены как (32-битные) одинарные прецизионные поплавки и (64-битные) поплавки с двойной точностью.Дифференциация между одинарной и двойной точностью
Точнее, я хотел бы сделать что-то вроде этого:
if isdouble(value):
binary=struct.pack('>d', value)
else:
binary=struct.pack('>f', value)
есть ли возможный путь для достижения этой цели?
Вы можете использовать NumPy 'float32' и' float64' типы. Нет никакого простого способа, AFAIK, проверить, может ли 64-битный float быть преобразован в 32 бита без потери точности. –
Как вы определяете сохранение значения двойной точности как значения одной точности? Вы заботитесь о потере точности? Так же, как и многие реальные числа округлены до того же значения двойной точности, так и многие значения двойной точности округлены до одного и того же значения точности. – chepner