genau 2 stellen hinter dem Komma anzeigen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Xaymar

ehemals "Cgamer"

BeitragFr, März 19, 2010 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
faeX hat Folgendes geschrieben:
Warum so kompliziert???

Weil du eine Float zurückgibts, die, wie Marius94 ja nicht haben will, .00 in .0 umwandelt

Edit: fix'd
Warbseite
  • Zuletzt bearbeitet von Xaymar am Sa, März 20, 2010 22:36, insgesamt 2-mal bearbeitet
 

CO2

ehemals "SirMO"

BeitragSa, März 20, 2010 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
entweder hast du dich grad vertan oder verschrieben Cgamer

ich möchte .0 in .00 umwandeln, nicht .00 in .0 Smile
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

Jamagin

BeitragMo, Aug 26, 2013 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
If Mid(T$,Instr(T$,".")+1, B) < B IST FALSCH da wenn man von 8.65 einen Betrag von 0.45 abzieht 8.2 angezeigt wird!

RICHTIG wäre:
If Mid(T$,Instr(T$,"."), B) < B (das +1 hinter der KLAMMER weglassen)

Ist zwar schon ein uralter Beitrag aber ich brauchte jetzt diese Funktion und ....


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Midimaster

BeitragMo, Aug 26, 2013 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich würde ja gleich mit INTEGER arbeiten. Also z.B. in "Cents" statt in "Euros"

Die Werte sind dann alle 100x so groß wie vorher. Die Berechnungen ergeben automatisch immer die richtige Anzahl "Nachkommastellen" (nämlich keine!)

Und erst bei der Ausgabe wird ein String daraus

Am Beispiel von 3.40 + 4,60 = 8.00

BlitzBasic: [AUSKLAPPEN]
A%=340
B%= 460
C%=A+B

Print Dezi(C)

Function Dezi$(Wert%)
T$=Wert
Return Left(T,Len(T)-2) + "." + Right(T,2)
End Function
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Jamagin

BeitragDi, Aug 27, 2013 7:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@midimaster,

super danke und ich habe es gleich noch erweitert!

Code: [AUSKLAPPEN]

Function dezi$(value%)
     T$ = value
    If value = 0
       T$ = "0.00"
      Return T$
   ElseIf value > 0 And value < 100
      T$ ="0."+ Right(T$, 2)
      Return T$
   Else
      Return Left(T$, Len(T$) - 2) + "." + Right(T$, 2)
   EndIf
End Function


Aus diesem Grunde, weil wenn der Wert 0 ist kommt eine Fehlermeldung und das wird nun abgefangen auch wenn der Wert kleiner 100 (in CENT) ist, wird eine 0 vorangestellt!


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Midimaster

BeitragDi, Aug 27, 2013 8:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh ja!!! Da hatte ich gar nicht dran gedacht. Danke!

Dann würde ich aber so machen:

BlitzBasic: [AUSKLAPPEN]
A%=340
B%= 460
C%=A+B

Print Dezi(C)

Function Dezi$(Wert%)
If Wert<0 Negativ$="-"

T$=Abs(Wert)
If Wert<100
T= Right("00" + T, 3)
EndIf

Return Negativ + Left(T,Len(T)-2) + "." + Right(T,2)
End Function


Dann hätte man auch gleich noch negative Zahlen zwischen 0 und -1.00 abgedeckt

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group