2016-07-14 20 views
0

私は、zipデータファイルからいくつかのデータを抽出するPyQtプログラム用のboost-pythonを使ってcppサブモジュールを作成しました。python Qt浮動小数点精度のboost-pythonサブモジュール

それは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

開発されたコードは、python-pyside(python 2.7およびQt4)を使用してUbuntu 16.04にありますが、pyQt4 qnd PyQt5パッケージでもPython 3.5用にコンパイルされたモジュールでも試しました。すべて同じ結果。 – Termo

答えて

0

これは、std :: stodを使用してデータの文字列をデータファイルからダブルに変換することに関連していました。理由は分かりませんが、次のように変更します。

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

これは想定したとおりに動作しました。

関連する問題