Quickfix浮动字段

问题描述 投票:0回答:1

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

例如:

>>> 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:
quickfix fix-protocol
1个回答
0
投票

我不确定该示例是否可行,也许您应该解释如何导入“修复程序”。无论如何,此示例均可与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'
>>>

希望我有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.