wer kann mir sagen, wie ich mit Matlab (benutze Vers. 7.0.4) die Anzahl der Stellen einer Zahl auslesen kann?
Ich habe z.B. folgende Variablen:
zahl1=12345;
zahl2=1.234;
Ich suche einen Befehl, der mir die Anzahl der Digits ausgibt.
Die Möglichkeit, dass ich den double-Wert zu einem char(STRING)-Wert umwandle:
num2str
und daraus mit „length()“ die Anzahl der Zeichen ablese, kenne ich bereits.
Da ich aber nicht diesen Umweg über „num2str“ gehen möchten, wäre ich sehr erfreut über Antworten die mir weiterhelfen.
wer kann mir sagen, wie ich mit Matlab (benutze Vers. 7.0.4)
die Anzahl der Stellen einer Zahl auslesen kann?
Ich habe z.B. folgende Variablen:
zahl1=12345;
zahl2=1.234;
Ich suche einen Befehl, der mir die Anzahl der Digits ausgibt.
Bei ganzen Zahlen kannst du einfach den Zehnerlogarithmus nehmen, abrunden und eins addieren.
Bei Fließkommazahlen ist das problematischer, weil sie alle mit der gleichen Genauigkeit gespeichert werden (zumindest die meisten Programmiersprachen machen das, ob Matlab es genauso macht, weiss ich nicht), d.h. sie sind z.B. alle als 64 Bit Fließkommazahlen gespeichert. Nicht jeder Wert, den man in Dezimalpunktnotation schreiben kann, wird dabei korrekt abgebildet. D.h. wenn du 1.32 schreibst, kann es sein, dass das Programm intern 1.3199999994 speichert, und nur bei der Ausgabe auf 1.32000 rundet und daher 1.32 ausgibt.
Was wäre in diesem Fall die „echte“ Anzahl von Stellen? 11 Stelle für 1.3199999994 oder 3 Stellen für 1.32?
Die Möglichkeit, dass ich den double-Wert zu einem
char(STRING)-Wert umwandle:
num2str
und daraus mit „length()“ die Anzahl der Zeichen ablese, kenne
ich bereits.
Da ich aber nicht diesen Umweg über „num2str“ gehen möchten,
wäre ich sehr erfreut über Antworten die mir weiterhelfen.
Für Fließkommazahlen wird es schwierig. Aber vielleicht kannst du uns ja sagen, wofür du das brauchst, dann ist es leichter, dir zu helfen.
Bei ganzen Zahlen kannst du einfach den Zehnerlogarithmus
nehmen, abrunden und eins addieren.
Wie funktioniert das mit dem 10er-Logarithmus? (war nie ein mathe-genie.)
Für Fließkommazahlen wird es schwierig. Aber vielleicht kannst
du uns ja sagen, wofür du das brauchst, dann ist es leichter,
dir zu helfen.
Danke auch für die Info über die Fließkommazahlen. Matlab rundet automatisch auf 4 Dezimal-Stellen ab (kann man aber ändern mit %.8f (=8 Dezimalstellen) zum Beispiel).
Ich habe durch Einlesen von xls-Sheets verschiedene Variablen in meinem Workspace. Die Variable „zahl1“ soll nun überprüft werden.
Was ich genau machen will:
Überprüfen, ob die manuell eingegebene Zahl genau 7 Stellen hat,
Überprüfen, ob die manuell eingegebene Zahl vom Typ „char“ ist.
Überprüfen, ob die manuell eingegebene Zahl vom Typ „double“ ist.
Bei ganzen Zahlen kannst du einfach den Zehnerlogarithmus
nehmen, abrunden und eins addieren.
Wie funktioniert das mit dem 10er-Logarithmus? (war nie ein
mathe-genie.)
log10(zahl)
Ich habe durch Einlesen von xls-Sheets verschiedene Variablen
in meinem Workspace. Die Variable „zahl1“ soll nun überprüft
werden.
Was ich genau machen will:
Überprüfen, ob die manuell eingegebene Zahl genau 7 Stellen
hat,
Dann musst du die Überprüfung machen, bevor der String in eine Zahl umgewandelt wird, sonst geht das nicht.