WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Nachkommastellen bei str2double

 

Laika_1988
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 04.12.14
Wohnort: Mannheim
Version: R2010b
     Beitrag Verfasst am: 01.03.2015, 21:39     Titel: Nachkommastellen bei str2double
  Antworten mit Zitat      
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 Smile

Danke für jede Hilfe
_________________

Was nicht fliegt, stürzt auch nicht ab !!!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.03.2015, 23:36     Titel:
  Antworten mit Zitat      
Hallo,

ist allein eine Frage der Anzeige. Diese kann beim Output im Command Window mit format angepasst werden, z.B.
Code:


Noch mehr Kontrolle hat man, wenn man die Ausgabe mit fprintf macht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Laika_1988
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 04.12.14
Wohnort: Mannheim
Version: R2010b
     Beitrag Verfasst am: 02.03.2015, 13:26     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die Antwort.

Format ist ne feine Sache Very Happy Very Happy Very Happy

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 !!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Laika_1988
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 04.12.14
Wohnort: Mannheim
Version: R2010b
     Beitrag Verfasst am: 03.03.2015, 12:06     Titel:
  Antworten mit Zitat      
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 Question Question Question Question Question
_________________

Was nicht fliegt, stürzt auch nicht ab !!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Laika_1988
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 04.12.14
Wohnort: Mannheim
Version: R2010b
     Beitrag Verfasst am: 03.03.2015, 16:48     Titel:
  Antworten mit Zitat      
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. Smile
_________________

Was nicht fliegt, stürzt auch nicht ab !!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.03.2015, 12:03     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Laika_1988
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 04.12.14
Wohnort: Mannheim
Version: R2010b
     Beitrag Verfasst am: 05.03.2015, 14:50     Titel:
  Antworten mit Zitat      
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 !!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.