私はかなりの数日間コードを作成しています。正直言って、髪が残っていません...私はstackoverflowを含めてどこでも検索しています私の苦境に匹敵するものに小数点以下2桁までの小計の防止
Mint 17.3でpython 2.7.6を使用しています。 日付/時刻を少なくともミリ秒の精度で処理する必要があります。秒単位での日付と時間の処理はかなり簡単ですが、ミリ秒またはマイクロ秒で投げ込むと、まったく別のボールゲームになります。最終的には、ログファイルを繰り返し処理する必要があり、特定の条件に基づいて、2行の日付/時刻の違いを少なくともミリ秒の精度に合わせる必要があります。精密さは、サーバ、PLC、およびスキャナがこの倉庫のコンベア状況に関与している場合、実際に重要です。ログファイルの日付/時刻は、次のようにフォーマットされます。
12-Apr-2016 23:59:59.720321
私はこれに対処する最も簡単な方法を考えたタイムスタンプの中に文字列を変換して、その後マイクロ秒を追加することでした。とにかくtimetuple()が何らかの分数を取り除くことがわかっているので、私はこの文脈でstrptimeを使用することについてもあまりよく分かりません。
はとにかく、多くの、多くの試行、および日後に、このための私のコードは、これまでに以下の通りです:
def timestampthen(timestring):
tt = datetime.datetime.strptime(timestring, "%d-%b-%Y %H:%M:%S.%f").timetuple()
ut = float(calendar.timegm(tt))
dotpos = timestring.rfind(".")
frac = float(timestring[dotpos:])
utfloat = float(ut + frac)
return utfloat
例で
、UT = 1460505599.0とFRAC = 0.720321、まだutfloat = 1460505599.72
私はformatと%fを使うことができますが、私は浮動小数点数を扱い、文字列は扱っていません。 上記のコードは正常に動作しますが、浮動小数点数が6以上の場合、浮動小数点は2小数点精度で戻ってくるのはなぜですか?もっと必要。 私は適切な方向に私を指し示すためにいくつかの指針をお願いします。
私はあなたのコードを実行しますが、私のために 'utfloat'は' 1460505599.720321'です。あなたのutfloatが丸みを帯びているとはどういうことができますか?印刷物? 'utfloat> 1460419273.37'は何を返しますか? – Francesco
私は例ログ出力を反映するために例を変更しました –
私のためのutfloatは四捨五入されています。私のデバッガを使用すると、丸められます。これは私のIDE(Wing pro)またはコマンドラインの中に出力されます: - '1460419273.0 0.373317 1460419273.37 –