Seite 1 von 1

gelöst: Exponentialdarstellung verhindern

Verfasst: Mo, 30.01.2012 21:32
von erikafuchs
Hallo zusammen:
Kennt ihr das:

Code: Alles auswählen

Sub Main
dim  Z, N as integer
Z=3
N=50
print Z & " " & N & " " & (Z/N)
Z=3
N=20
print Z & " " & N & " " & (Z/N) 
End Sub
...wenn die erste Stelle hinter dem Komma eine Null ist, wird der Quotient in Exponentialdarstellung ausgegeben, sonst nicht. Wie kann ich die Exponentialdarstellung verhindern. Vorher habe ich das mit CDec gemacht, das geht aber mit Linux nicht!
Hilfe!
Danke für eure Hilfe
Pit

Re: Exponentialdarstellung verhindern

Verfasst: Mo, 30.01.2012 22:15
von bst
Abend,

benutze Format. Siehe: http://help.libreoffice.org/Basic/Forma ... on_Runtime

Code: Alles auswählen

print Z & " " & N & " " & Format((Z/N),"0.0#####")
HTH, Bernd

Re: Exponentialdarstellung verhindern

Verfasst: Mo, 30.01.2012 22:29
von erikafuchs
Lieber Bernd,
vielen Dank erstmal. Leider funktioniert das nicht wie ich es brauche. Meine Zahlen werden mit Zufallszahlen erzeugt. Das Ergebnis sind mal ganze Zahlen, mal Zahlen mit einer unterschiedlichen Anzahl Dezimalstellen. Ein Beispiel, meine Schüler müssen Brüche in Kommazahlen umwandeln. Die Vorgabe (erfolgt wie gesagt mit Zufallszahlen) das Ergebnis kann dann 3/10=0,3; 23/100=0,23; 1/8=0,125; oder auch 4/2=2 sein. Bei der Aufgabe 3/50 wird jetzt halt die Eingabe 6E-02 statt 0,06 erwartet.
Viele Grüße
Pit

Re: Exponentialdarstellung verhindern

Verfasst: Di, 31.01.2012 01:12
von Karolus
Hallo
Der Vergleich (in Calc ) 6e-02=0,06 ergibt WAHR, also so wie dus möchtest.

Karo

Re: Exponentialdarstellung verhindern

Verfasst: Di, 31.01.2012 06:34
von erikafuchs
Da meine Schüler aber auch z.B. Einheiten eingeben müssen, ist die entsprechende Variable eine Stringvariable und da bekomme ich die Umwandlung nicht hin, das ging mit CDec, aber nicht mit val:

Code: Alles auswählen

Sub Main
	dim  Z, N as integer
	dim e as string
	Z=3
	N=50
	e = "0,6"
	if  Z/N = val(e) then 
   		print "richtig"
	else
   		print "falsch: " & Z/N & " = " & e
	end if   
end sub
Grüße
Pit

Re: Exponentialdarstellung verhindern

Verfasst: Di, 31.01.2012 07:44
von Karolus
Hallo

Lieber Pit
0,6 ist nicht das Ergebnis der Division 3 / 50 sondern vmtl. 0,06 :lol:
Zudem musst du innerhalb Basic wohl oder übel den Dezimalpunkt verwenden, dann klappt auch die Umwandlung mit val( )

Karo

Re: Exponentialdarstellung verhindern

Verfasst: Di, 31.01.2012 16:03
von erikafuchs
Lieber Karo,
vielen Dank soweit. Die Null ist heute morgen um halb Sieben wohl verlorengegangen. Das mit der Null ist zwar ein Problem, hilft mir aber weiter. Mit dem Befehl CDec wird nur das Komma als richtig gewertet, mit val muss man dann wohl ein Punkt setzen. Das kann ich meinen Schülern so aber nicht beibringen. Das heißt, wenn niemand eine bessere Idee hat muss ich in den Eingaben der Schüler das Komma durch einen Punkt ersetzen und dann erst vergleichen. ... Hat jemand eine Idee warum CDec nur unter Windows funktioniert? ...
Grüße von
Pit

Re: Exponentialdarstellung verhindern

Verfasst: Di, 31.01.2012 16:50
von erikafuchs
So, ich nochmal,
ich habe jetzt rumprobiert. Bernds Lösung schein am einfachsten zu funktionieren, man muss nur die Formatanweisung so ändern, dass die erste Stelle hinterm Komma nicht Null sondern # ist, dann werden auch ganze Zahlen als solche angezeigt. Dank euch Allen!
Grüße
Pit
PS.: Allerdings war CDec einfacher