2016-07-14 54 views
0

我已经为我的PyQt程序制作了一个带有boost-python的cpp子模块,其中包括从zip数据文件中提取一些数据。python qt float boost boost-python submodule的精度

它在Python测试时,它工作正常:

import BPcmods 
BPzip = BPcmods.BPzip() 
BPzip.open("diagnostics/p25-dev.zip") 
l=BPzip.getPfilenames() 
t=BPzip.getTempArray([l[1][4],l[1][3]],40.) 
print(t[11][:10]) 

>> [40.1, 40.44, 40.78, 41.11, 41.44, 41.77, 41.77, 42.09, 42.41, 42.73] 

如果我把相同的代码在我主要部分的开始,同时也给出了同样的数据,但如果我把正确的代码我叫

main.app = QtGui.QApplication(sys.argv) 

后,突然产生了:

[40.0, 40.0, 40.0, 41.0, 41.0, 41.0, 41.0, 42.0, 42.0, 42.0] 

为什么?发生了什么?这些数字仍然是浮动的,但突然它们被四舍五入为最接近的整数?!?

+0

开发的代码是在Ubuntu 16.04上使用python-pyside(python 2.7和Qt4),但我只是尝试用pyQt4 qnd PyQt5包以及我的模块编译为python 3.5。所有相同的结果。 – Termo

回答

0

那么这与使用std :: stod将我的数据文件中的数据字符串转换为双精度有关。我不知道为什么,但改为:

boost::algorithm::trim(s); 
double val = boost::lexical_cast<double>(s); 

使它工作,因为它应该是,也在pyqt。