|
|
Nachkommastellen bei str2double |
|
Laika_1988 |

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 04.12.14
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 01.03.2015, 21:39
Titel: Nachkommastellen bei str2double
|
 |
Hallo Leute,
ich habe mal eine Frage zum Aufruf str2double.
Ich habe aus einer Datei mehrere Werte ausgelesen.
Alle sind als string gespeichert, weil es unterschiedliche formate sind.
Jetzt habe ich z.b. strTransistor = '1.2'
ich brauche es als string als auch als zahl.
ich habe dann str2double(strTransistor) gemacht und erhielt 1.2000.
Gibt es da ein Trick, es ohne die lästigen Nullen darzustellen ?
Ich hätte schon gerne 1.2 darstehen
Danke für jede Hilfe
_________________
Was nicht fliegt, stürzt auch nicht ab !!!
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.03.2015, 23:36
Titel:
|
 |
Hallo,
ist allein eine Frage der Anzeige. Diese kann beim Output im Command Window mit format angepasst werden, z.B.
Noch mehr Kontrolle hat man, wenn man die Ausgabe mit fprintf macht.
Grüße,
Harald
|
|
|
Laika_1988 |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 04.12.14
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 02.03.2015, 13:26
Titel:
|
 |
Hallo Harald,
danke für die Antwort.
Format ist ne feine Sache
Die Daten werden über einen Vektor in eine uitable eingelesen.
Da kann ich leider kein fprintf benutzen.
Die Matrix ist leider eine numerische Matrix, sonst, würde ich es als string lassen.
Kann ich bei uitable einfach Format benutzen oder gibt es da noch eine andere Möglichkeit ?
_________________
Was nicht fliegt, stürzt auch nicht ab !!!
|
|
|
Laika_1988 |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 04.12.14
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 03.03.2015, 12:06
Titel:
|
 |
Ich habe versucht zu runden mit round, aber da kommt 2 raus bei 1.8.
Schlecht.
Dann habe ich einen Thread hier entdeckt round(x*100)/100
da kommt allerdings wieder 1.8000 raus.
Ich weiß leider immernoch nicht, wie ich diese blöden nullen wegbekomme
_________________
Was nicht fliegt, stürzt auch nicht ab !!!
|
|
|
Laika_1988 |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 04.12.14
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 03.03.2015, 16:48
Titel:
|
 |
Ich habe jetzt folgendes gemacht.
Zwar nicht die feinste Art, aber es funktioniert.
Ich habe den Wert, den ich haben will als string gelassen
und die numerische matrix als cell-matrix aufgesetzt und alle werte mit cellstr konvertiert.
_________________
Was nicht fliegt, stürzt auch nicht ab !!!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 04.03.2015, 12:03
Titel:
|
 |
|
 |
|
Hallo Laika_1988,
Zitat: |
Dann habe ich einen Thread hier entdeckt round(x*100)/100
da kommt allerdings wieder 1.8000 raus. |
Das ist ein Denk-Fehler. Es kommt nicht "1.8000" heraus, sondern das ist nur die Darstellung im Command-Window. Irgendwie muss Matlab ja die Zahlen darstellen und es kann nicht erraten werden, was Du genau möchtest.
Die Ergebnisse, die heraus kommen, sind intern immer Zahlen. Intern werden Zahlen im Binärformat gespeichert. Dabei muss man bedenken, dass die meisten Dezimal-Zahlen keine exakte Darstellung im Binär-Format mit begrenzter Stellen-Zahl haben. Deshalb kann es intern z.B. auch eine 1.799999999999999 sein, was im Command-Window als 1.8000 angezeigt wird. Trotzdem kann es das beste Ergebnis von round(1.8*100)/100 sein!
Suche dazu im Netz nach "floating point arithmetic" oder "IEEE 754".
Der FORMAT-Befehl wäre bestimmt hilfreich für Deine Zwecke. Die Umwandlung in Strings ist immer erst zweite Wahl bei der Darstellung von Dezimal-Zahlen, denn sie gauckelt eine Genauigkeit vor, die gar nicht existiert!
Gruß, Jan
|
|
|
Laika_1988 |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 51
|
 |
|
 |
Anmeldedatum: 04.12.14
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 05.03.2015, 14:50
Titel:
|
 |
Hallo,
mein Problem ist dass alle Werte bis auf die Transistornummer double sind.
Wenn ich jetzt den String 1.8 in double konvertiere erhalte ich 1.8000,
was natürlich schlecht ist.
Wie mache ich das genau mit dem Format.
Ich habe schon die Dokumentation gelesen, aber irgendwie versteh ich es nicht.
Ich habe vor dem konvertieren einfach format shortg geschrieben, aber das ändert ünerhaupt nichts.
_________________
Was nicht fliegt, stürzt auch nicht ab !!!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|