Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Aktion von Nachkommastelle abhängig machen
dabaduda - Di 05.07.16 17:59
Titel: Aktion von Nachkommastelle abhängig machen
Wie kann ich Eine Aktion von der Nummer einer Nachkommastelle abhängig machen?
Ich möchte dass immer wenn eine Variable eine 1 hinter dem Komma hat, etwas anderes passiert als wenn nicht.
Bei Zahlen wie 3,1/3,1415/0,1174/81547858,14 soll etwas anderes passieren als bei Zahlen wie 5,5/3,2534/1813541,74334.
Wie kann Delphi herausfinden ob dies der Fall ist oder nicht.
Und warum ist mein ganzer Text weg wenn ich auf absenden klicke, nur weil ich mich nochmal anmelden muss :(
FinnO - Di 05.07.16 18:05
Moin,
du kannst die Zahl mit zehn multiplizieren, die verbleibenden Nachkommastellen abschneiden und gucken ob am Ende eine eins steht:
Delphi-Quelltext
1: 2: 3: 4:
| if (trunc(z * 10) - 1) mod 10 = 0 then begin end |
PS.: Ich habe Delphi vollständig verdrängt, bei Syntaxfehlern also gerne korrigieren.
Gruß
Ralf Jansen - Di 05.07.16 18:10
Delphi-Quelltext
1:
| if (Int(Frac(Zahl) * 10) = 1) then |
Könnte passen. Ist vermutlich die erste Zeile Delphi in diesem Jahrzehnt von mir ;)
Sind deine Quellzahlen auch potentiel negativ?
Funktionsweise
Zahl = 123.1234567
Frac(Zahl) -> 0.1234567 (nur Nachkommaanteil)
Zahl * 10 -> 1.234567 (Komma um eine Stelle verschieben)
Int(Zahl) -> 1 (nach Integer ändern, heißt Nachkommaanteil wegwerfen)
dabaduda - Di 05.07.16 18:17
Was machen Frac(),trunc() und mod genau? Nur damit ich ungefähr verstehe warum das überhaupt funktioniert ^^
Ralf Jansen - Di 05.07.16 18:21
Frac gibt dir den Nachkommaanteil einer Zahl, Trunc nur den Vorkommaanteil und mod ist halt der Modulo Operator.
jaenicke - Mi 06.07.16 08:23
dabaduda hat folgendes geschrieben : |
Und warum ist mein ganzer Text weg wenn ich auf absenden klicke, nur weil ich mich nochmal anmelden muss :( |
Bei einem guten Browser kannst du nach der Anmeldung einfach zurück drücken bis du wieder vor der Anmeldung im Antwortfenster bist. Der Text ist dann wieder da und Absenden sollte dann auch klappen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!