Matlab (Anzahl der Ziffern einer Zahl auslesen)

Hallo,

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.

Vielen vielen Dank im Voraus.
Gruß,
Flo

Hallo,

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.

Grüße,
Moritz

Hallo Moritz,

VIELEN DANK FÜR DEINE RASCHE ANTWORT.

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:

  1. Überprüfen, ob die manuell eingegebene Zahl genau 7 Stellen hat,
  2. Überprüfen, ob die manuell eingegebene Zahl vom Typ „char“ ist.
  3. Überprüfen, ob die manuell eingegebene Zahl vom Typ „double“ ist.

Grüße,
Flo

Hallo,

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:

  1. Ü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.

Grüße,
Moritz

Hallo Moritz,

log10(zahl)

Dann musst du die Überprüfung machen, bevor der String in eine
Zahl umgewandelt wird, sonst geht das nicht.

Ich danke für Deine Hilfe.
Hat jetzt geklappt!!
Grüße,
Flo