genau 2 stellen hinter dem Komma anzeigen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: genau 2 stellen hinter dem Komma anzeigen

BeitragFr, März 19, 2010 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
ich wollte mal fragen ob man auch 2 stellen hinter dem Komma anzeigen lassen kann, auch wenn diese z.B.: 1,00 sind und wenn man das nun mit 1,234 addiert, das dann wieder nur zwei stellen angezeigt werden.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Thunder

BeitragFr, März 19, 2010 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Stringbefehlen geht es auf jeden Fall mal:

BlitzBasic: [AUSKLAPPEN]
Local x#=283.4882
Local y#=Float(Left(Str(x),Instr(Str(x),".")+2))
Print x
Print y


hast du das gemeint?

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

CO2

ehemals "SirMO"

BeitragFr, März 19, 2010 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ok thx
funktioniert leider nicht so wie ich das wollte.
also wenn man bei deinem beispiel zu y 343,2344 addiert sind am ende 3 stellen hinter dem komma und nicht nur 2.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am Fr, März 19, 2010 20:46, insgesamt einmal bearbeitet

Xaymar

ehemals "Cgamer"

BeitragFr, März 19, 2010 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Codearchiv

Das sollte dir mit gewissen änderungen das zurückliefern was du haben willst
Warbseite

Thunder

BeitragFr, März 19, 2010 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Marius94 hat Folgendes geschrieben:
also wenn man bei deinem beispiel zu y 343,2344 addiert sind am ende 3 stellen hinter dem komma und nicht nur 2.


Natürlich. Das wirst du auch nie "ausschalten" können. Wenn du eine Zahl mit mehr als 2 Kommastellen dazuaddierst wirst du auch mehr bekommen. Du kannst diese Gleichung zu einer Funktion umbauen und sie immer wieder auf deine Zahlen anwenden, nachdem du die Zahl der Kommastellen erhöht hast.

BlitzBasic: [AUSKLAPPEN]
Local x#=283.4882
Local y#=Komma2(x)
y=y+343.2344 ; Jetzt gibt es natürlich wieder mehr Kommastellen (4)
y=Komma2(y) ; Jetzt nur mehr 2
y=y-28.282 ;Jetzt gibt es 3
y=Komma2(y) ;Jetzt wieder 2

Function Komma2(i#)
Return Float(Left(Str(i),Instr(Str(i),".")+2))
End Function



mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

CO2

ehemals "SirMO"

BeitragFr, März 19, 2010 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
leider kann man da nicht mit variablen arbeiten, beispiel:

Code: [AUSKLAPPEN]

Function RoundTo# (value#,digit)
   If digit < Len(Str(value))-Instr(Str(value),".")
      Local nextvalue = Int(Mid(Str(value),Instr(Str(value),".")+digit+1,1))
      If nextvalue > 4
         Return Ceil(value*10^digit)/10^digit
      Else
         Return Floor(value*10^digit)/10^digit
      EndIf
   Else
      Return value
   EndIf
End Function

Global money# = 12000.00

Global moneyprint# = RoundTo#(money#, 2)

Print "" + moneyprint + "€"

WaitKey()

End


Dabei kommt folgende Ausgabe:

12000.0€

ich möchte aber, dass

12000.00€

angezeigt wird.



@ Thunder

ich hab einen kleinen Fehler bei deinem Code gefunden,

deine Ausgabe wäre so 656.0 (oder was auch immer mir kommt es auf die nachkommastelle an), da deine funktion nur einen Integer wert zurückliefert, richtig müsste sie also lauten:

Komma2#(i#)

trotzdem sehr gut, danke hat mir sehr geholfen, nur das nicht 2 nullen hinter dem komma angezeigt werden nervt mich noch.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am Fr, März 19, 2010 21:07, insgesamt einmal bearbeitet

Thunder

BeitragFr, März 19, 2010 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, wenn du immer genau 2 Stellen angezeigt bekommen willst, solltest du mit Strings arbeiten. Möglicherweise geht es auch anders, aber mit Strings geht es leichter Very Happy .
Auch meine Funktion wird bei ,00 ein "falsches" Ergebnis liefern. Wenn du sie allerdings so umschreibst, dass sie einen String zurückgibt:

BlitzBasic: [AUSKLAPPEN]
Function Komma2$(i#)
Return Left(Str(i),Instr(Str(i),".")+2)
End Function


Dann sollte das richtige herauskommen.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

CO2

ehemals "SirMO"

BeitragFr, März 19, 2010 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
immernoch das problem mit den zwei nullen hinter dem komma

sie zeigt doch 2 nachkommastellen an, allerdings auch nur eine null
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Thunder

BeitragFr, März 19, 2010 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja. Tut mir Leid. Ich habe da was übersehen.

BlitzBasic: [AUSKLAPPEN]
Function Komma2$(i#)
Local z$=Left(Str(i),Instr(Str(i),".")+2)
If Instr(z,".")+1=Len(z) Then z=z+"0"
Return z
End Function


So müsste die Funktion funktionieren

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Thunder

BeitragFr, März 19, 2010 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja. Tut mir Leid. Ich habe da was übersehen.

BlitzBasic: [AUSKLAPPEN]
Function Komma2$(i#)
Local z$=Left(Str(i),Instr(Str(i),".")+2)
If Instr(z,".")+1=Len(z) Then z=z+"0"
Return z
End Function


So müsste die Funktion funktionieren

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

CO2

ehemals "SirMO"

BeitragFr, März 19, 2010 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
leider immernoch das problem mit den nullen.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

mpmxyz

BeitragFr, März 19, 2010 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt daran, dass eine Floatvariable nur einen Wert und keine Formatierung speichert.
BlitzBasic: [AUSKLAPPEN]
a#=1.00000000000 ;Es ist egal, wie viele Nullen noch kommen. Es ist und bleibt der selbe Wert.

Wenn du etwas formatieren möchtest, musst du durchgehend Strings benutzen.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Xaymar

ehemals "Cgamer"

BeitragFr, März 19, 2010 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function FloatToString$(A#,B%)
   Local T$ = Str(A)
   T$ = Left(T$,Instr(T$,".")+B)
   If Mid(T$,Instr(T$,".")+1,B) < B
      While Len(Mid(T$,Instr(T$,".")+1,B)) < B
         T$ = T$ + "0"
      Wend
   EndIf
   Return T$
End Function


Geht ohne Probleme mit den nullen
Warbseite
 

CO2

ehemals "SirMO"

BeitragFr, März 19, 2010 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn ich das versuche wird 1.00 zu 1.0

achso und wenn wir grad nen thread offen haben wollte ich gleich mal ne ganz spontane frage stellen:
wie ändere ich, das nicht schwarz sondern z.b. lila tranzparent angezeigt wird (in bildern)? Very Happy
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xaymar

ehemals "Cgamer"

BeitragFr, März 19, 2010 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
MaskImage
Und die funktion funktioniert einwandfrei. Also brauch ich von dir erstmal nen code warum es bei dir ja falsch geht, denn das funktioniert:
BlitzBasic: [AUSKLAPPEN]
Print 10.00
Print FloatToString(10.00,2)
WaitKey
Warbseite

Thunder

BeitragFr, März 19, 2010 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehme an, du wandelst nach der Anwendung der Funktion von CGamer den String wieder in ein Float um und wunderst dich, wieso nur eine Null angezeigt wird. Wenn du den Wert mit mehr nullen Speichern willst musst du Stringvariablen (erkennbar an dem $ nach dem Namen) verwenden.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

faeX

BeitragFr, März 19, 2010 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum so kompliziert???

BlitzBasic: [AUSKLAPPEN]

Print RoundToDigit(1.2345, 2)

Function RoundToDigit#(floValue#, intDigit%)

Return Float(Int(floValue*10^intDigit)/10^intDigit)

End Function
 

CO2

ehemals "SirMO"

BeitragFr, März 19, 2010 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
wie mache ich denn das, wenn ich anstatt einer gewählten zahl eine variable angebe?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

CO2

ehemals "SirMO"

BeitragFr, März 19, 2010 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich habs thx für die hilfe ;D
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

SpionAtom

BeitragFr, März 19, 2010 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann werfe ich auch ne Anzeigemöglichkeit ins Rennen:

Code: [AUSKLAPPEN]
zahl# = 12.34567
Text 0, 0, Int(zahl) + "." + Int(zahl * 10) Mod 10 + Int(zahl * 100) Mod 10


(Und diese Methode zeigt wirklich IMMER 2 Nachkommastellen.)
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group