- Status Closed
- Percent Complete
- Task Type Fehlerbericht
- Category GUI & Server → InputAssignment
- Assigned To No-one
- Operating System All
- Severity Low
- Reported Version 3.3 Beta x
- Due in Version 3.3.0
-
Due Date
Undecided
- Votes
- Private
FS#4873 - Floatingpoint-Probleme im Expression-Node
Folgendes Vorgehen führt zu einer Exception im Kernel:
- In einem leeren Projekt das Input Assignment öffnen und ein neues Connectionset hinzufügen
- Einen Expression-Node hinzufügen
- In die Einstellungen des Nodes gehen
- Folgende Formel eingeben “1.57” [1 Punkt 57]
- Folgende Exception erscheint im Kernel:
02:37:33 ERROR ExpressionNode - Jace.ParseException: Invalid token "." detected at position 1. bei Jace.Tokenizer.TokenReader.Read(String formula) bei Jace.CalculationEngine.BuildAbstractSyntaxTree(String formulaText) bei Jace.CalculationEngine.Calculate(String formulaText, IDictionary`2 variables) bei org.dmxc.lumos.Kernel.Input.v2.Worker.ExpressionNode.processInternal(NodeProcessContext context) in P:\DMXControl\Lumos\Lumos\src\Kernel\Input\v2\Graph\Node\Worker\Logic\ExpressionNode.cs:Zeile 133.
- Wird stattdessen “1,57” [1 Komma 57] geschrieben, so funktioniert alles und es kommt 1.57 [1 Punkt 57] als Ergebnis heraus. Es wäre gut, wenn auch die Eingabe mit Punkt statt Komma möglich wäre
Kurze Frage: Soll der "." zusätzlich funktionieren? Die CalculationEngine zieht sich das aktuelle Locale, und in DE ist halt das Komma das Trennzeichen.
Gefühlt ist der Punkt mit dem Komma vs. Punkt nicht konsequent umgesetzt. Im Device Control wird zwar Punkt und Komma akzeptiert, am Ende steht in den Feldern ein Wert mit Punkt.
Hier wäre ich für eine softwareweite einheitliche Umsetzung.
Hmmm, das Ziehen der Lokale in der Engine sehe ich insofern als kritisch als dass dann ein Projekt beim Übertragen auf einen anderen PC mit anderer Lokale zu Fehlern führt. Daher sollte bei der Eingabe beides akzeptiert werden. Die Lokale wäre meiner Meinung nach nur bei der Darstellung relevant.
Die Inkonsequenz kommt daher, dass wir ohne I18N gestartet haben, und im Englischen halt "." als Trenner ist. Zudem funkt hier auch noch Windows selber dazwischen (wie in diesem Fall).
Bedeutet, es soll auch hier wieder der "." sein, ein "," wird zu einem Punkt umgeschrieben….
Ok, dann von mir aus alles mit Punkt.
Bitte in Beta 7 testen