| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 10.04.2017, 12:08    Titel: Zahlen mit bestimmter Anzahl an Kommastellen speichern? |   |  
				| 
 |  
				| Mit Double werden mir die Kommastellen von Zahlen angezeigt. Wenn ich aber jetzt eine ganze Zahl wie 5 habe, wird mir nur 5 angezeigt. Gibt es eine Möglichkeit, dass mir dass Programm die Zahl mit 1 oder 2 Kommastellen anzeigt? Genau so:  Auch beim abspeichern in eine Datei, wird lediglich eine 5 abgespeichert und nicht 5.0? Ich verwende keinen String, sondern Integer bzw. Double als Format! Im Moment habe ich noch keine Lösung, wie ich die Kommastellen explizit definieren und in eine Datei speichern kann? 
 Freebasic hat da leider keinen vernünftigen Befehl für so was.
 Eine entsprechende Suche blieb erfolglos!
 
 Vielleicht hat einer eine Idee?
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 10.04.2017, 12:47    Titel: |   |  
				| 
 |  
				|  	  | Zitat: |  	  | Freebasic hat da leider keinen vernünftigen Befehl für so was. | 
 
 And dieser Stelle sei wieder die schon in deinem letzten Thread erwähnte FORMAT-Funktion erwähnt, die tut nämlich genau das, was du willst.
 _________________
 » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 
  |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 10.04.2017, 14:25    Titel: |   |  
				| 
 |  
				| Leider nicht ganz! Wenn ich Format verwende: 	  | Jojo hat Folgendes geschrieben: |  	  |  	  | Zitat: |  	  | Freebasic hat da leider keinen vernünftigen Befehl für so was. | 
 
 And dieser Stelle sei wieder die schon in deinem letzten Thread erwähnte FORMAT-Funktion erwähnt, die tut nämlich genau das, was du willst.
 | 
 
 
  	  | Code: |  	  | FORMAT(Anzahl(j),"####.#") | 
 gibt der mir bei 2.0 ein  und nicht 2.0 aus! Das mit dem Komma kann man, wenn ich das richtig gesehen habe, ändern. Das wäre nicht das Problem. Aber mir fehlt halt einfach die 0. Ich kann nicht auf ein Komma prüfen, wenn es auf einem anderen Rechner ein Punkt ist? Dadurch stimmt die Formatierung letztendlich nicht mehr! Sobald die Zahl nach dem Komma (Punkt) eine 0 ist, wird diese nicht mehr mit ausgegeben. Vielleicht muss ich das ganze doch irgendwie mit einem String lösen? Die 0 muss vorhanden sein! Bei einer 5 nach dem Komma wird die Zahl mit ausgegeben. Das funktioniert korrekt! Nur bei einer 0 gibt es Probleme.
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 
 Zuletzt bearbeitet von ALWIM am 10.04.2017, 17:29, insgesamt einmal bearbeitet
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Elor 
 
 
 Anmeldungsdatum: 12.07.2013
 Beiträge: 205
 Wohnort: Konstanz
 
 | 
			
				|  Verfasst am: 10.04.2017, 15:13    Titel: |   |  
				| 
 |  
				| Warum verwendest du nicht einfach "Print Using"? Beispiel:
 
  	  | Code: |  	  | Dim As Integer hFile, iZahl= 9
 Dim As Double fZahl= 5.0
 
 hFile= FreeFile ()
 Open "Test.txt" for OutPut As hFile
 Print #hFile, Using "#.###"; fZahl
 Print #hFile, Using "#.###"; iZahl
 Close (hFile)
 
 | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 10.04.2017, 17:25    Titel: |   |  
				| 
 |  
				|  	  | Elor hat Folgendes geschrieben: |  	  | Warum verwendest du nicht einfach "Print Using"? Beispiel:
 
  	  | Code: |  	  | Dim As Integer hFile, iZahl= 9
 Dim As Double fZahl= 5.0
 
 hFile= FreeFile ()
 Open "Test.txt" for OutPut As hFile
 Print #hFile, Using "#.###"; fZahl
 Print #hFile, Using "#.###"; iZahl
 Close (hFile)
 
 | 
 | 
 
 Das Problem ist, dass Print Using zwar generell funktioniert, aber mehrere Variablen nicht mehr schluckt!
 
 Ein Beispiel:
 
 
  	  | Code: |  	  | PRINT #f, "007" + SPACE(5-LEN(STR(j))) + STR(j) + " b" + USING("####.#"); Zahl(j) + " test" | 
 
 Obiger Code funktioniert nicht! Aber genau an der Stelle, wo das Using ist, soll die Kommazahl sein bzw. in die Datei gespeichert werden.
 
 Das muss in der Datei in einer Zeile gespeichert werden! Über Umwege könnte ich vielleicht etwas machen, aber das ist nicht die eleganteste Lösung.
 
 Edit:
 Ich brauche mindestens 2 USINGS in 1 Zeile!
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Elor 
 
 
 Anmeldungsdatum: 12.07.2013
 Beiträge: 205
 Wohnort: Konstanz
 
 | 
			
				|  Verfasst am: 10.04.2017, 18:17    Titel: |   |  
				| 
 |  
				| Ja zwei Usings hintereinander geht nicht, aber mit FORMAT wie Jojo ja schon geschrieben hat sehr wohl. Du musst nur die Platzhalter durch Nullen ersetzen, z.B. so: 
  	  | Code: |  	  | Print #Dateinummer, Format (Deinzahl, "00000.0")+ ...
 
 | 
 Hier werden führende Nullen erzeugt, bei einem Integer lässt du .0 einfach weg. Damit solltest du eigentlich das erhalten was du suchst.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 10.04.2017, 19:10    Titel: |   |  
				| 
 |  
				| Die Symbole im Formatstring lassen sich übrigens auch kombinieren:  	  | Code: |  	  | Print #Dateinummer, Format (Deinzahl, "#####.00")+ ... | 
 Selbst solche abenteuerlichen Kombinationen wie
 funktionieren. Ob dabei etwas sinnvolles herauskommt, sei mal dahingestellt... 	  | Code: |  	  | Print #Dateinummer, Format (Deinzahl, "00#####00.###000")+ ... | 
   
 Gruß
 grindstone
 _________________
 For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 11.04.2017, 15:12    Titel: |   |  
				| 
 |  
				|  	  | grindstone hat Folgendes geschrieben: |  	  | Die Symbole im Formatstring lassen sich übrigens auch kombinieren:  	  | Code: |  	  | Print #Dateinummer, Format (Deinzahl, "#####.00")+ ... | 
 | 
 
 Jetzt habe ich es hinbekommen. Vielen herzlichen Dank für den Tipp!
   
 Nur so klappt es:
 
 
 Musste allerdings im Computer in den Systemsteuerungen das Zeichen auf einen Punkt ändern. Wenn ich jetzt den Rest auch noch hinbekomme, gibt's was zu feiern! Da fehlt nämlich immer noch etwas. Ich bin noch nicht da, wo ich letztendlich hin möchte! Bis jetzt klappt alles...
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Elor 
 
 
 Anmeldungsdatum: 12.07.2013
 Beiträge: 205
 Wohnort: Konstanz
 
 | 
			
				|  Verfasst am: 11.04.2017, 18:55    Titel: |   |  
				| 
 |  
				|  	  | Zitat: |  	  | Nur so klappt es: Code:
 FORMAT(j,"####.0")
 | 
 Ich weiß zwar nicht in welchem Zahlenbereich du Arbeitest, aber falls auch werte <1 >0 vor kommen können gibt dir FORMAT keine Null vor dem Dezimalpunkt aus.
 Also z.B. bei 0.5 gibt FORMAT .5 zurück.
 
 grindstone hat ja schon in seinen Beispielen angedeutet das man # und 0 kombinieren kann.
 Im meinem Beispiel mit 0.5 müsste dein Formatstring so aussehen
 
  	  | Code: |  	  | Format (DeineZahl, "###0.0")
 
 | 
 damit eine 0 vor dem Dezimalpunkt ausgegeben wird.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		|  |