Quickfix 浮点字段

Quickfix Float Fields

我想知道使用 Quickfix (python) 读取浮点字段的正确方法。我得到一个字符串然后转换为浮动。

例如:

>>> m = fix.Message()
>>> m.setField(fix.BidPx(1.12))
>>> m.getField(fix.BidPx()).getString()
'1.12'
>>> float(m.getField(fix.BidPx()).getString())
1.12

上述方法适用于精度小于 15 位的浮点数。但是对于精度超过 15 位的浮点数,我得到以下错误:

>>> m = fix.Message()
>>> m.setField(fix.BidPx(1.123456789123456))
>>> m.getField(fix.BidPx()).getString()
'\x00\xe1}\xf5\x82U\x00\x0078912346'

>>> float(m.getField(fix.BidPx()).getString())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float:

我不确定该示例是否有效,也许您应该解释一下如何导入 "fix"。 无论如何,此示例适用于 python 3.7 和 quickfix 1.15.1

>>> import quickfix as fix
>>> m = fix.Message()
>>> m.setField(fix.BidPx(1.123456789123456789123456789))
>>> m.getField(fix.BidPx().getField())
'1.12345678912346'
>>>

如果你需要更精确的浮点数,你可以这样做

>>> m.setField(fix.StringField(fix.BidPx().getField(),"1.123456789123456789123456789"))
>>> m.getField(fix.BidPx().getField())
'1.123456789123456789123456789'
>>>

希望对您有所帮助