Konvertieren von Pythons Decimal () in einen INT und einen Exponenten

8

Ich möchte den Datentyp Decimal () in Python verwenden und ihn in eine Ganzzahl und einen Exponenten umwandeln, damit ich diese Daten mit voller Genauigkeit und Dezimalkontrolle an einen Mikrocontroller / SPS senden kann. Ссылка

Ich habe es zur Arbeit, aber es ist hackisch; Weiß jemand einen besseren Weg? Wenn nicht, welchen Pfad würde ich nehmen, um eine niedrigere "as_int ()" Funktion selbst zu schreiben?

Beispielcode:

%Vor%

Für diejenigen, die keine programmierten PLCs haben, besteht meine Alternative darin, einen int zu verwenden und den Dezimalpunkt in beiden Systemen zu deklarieren oder einen Gleitkommawert zu verwenden (den nur einige PLCs unterstützen) und ist verlustbehaftet. Sie können also sehen, warum es großartig wäre, dies tun zu können!

Vielen Dank im Voraus!

    
ericnutsch 24.07.2014, 22:09
quelle

4 Antworten

3

Sie könnten dies tun:

[Das ist 3 mal schneller als die anderen Methoden]

%Vor%

Leistungstest

%Vor% Berechnung der Zeit für 100.000 Schleifen für beide Methoden: %Vor%

Zeit für die String-Parsing-Methode: 1.56606507301

%Vor%

Benötigte Zeit für die Umwandlung in Tupel, dann Extraktionsmethode: 4.67159295082

    
Raghav RV 24.07.2014, 22:48
quelle
2
%Vor%     
smesseim 24.07.2014 22:29
quelle
2

Erhalten Sie den Exponenten direkt aus dem Tupel wie Sie waren:

%Vor%

Dann multiplizieren Sie mit der richtigen Potenz von 10:

%Vor%

Alles zusammenfügen:

%Vor%     
Mark Ransom 24.07.2014 23:02
quelle
0
%Vor%     
ehsan88 24.07.2014 22:39
quelle