Variable auf 2 Kommastellen genau anzeigen
Übersicht

FoxBetreff: Variable auf 2 Kommastellen genau anzeigen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hiho,
ich habe ein kleines problem mit einer variablen, die einen geldwert widergeben soll. nach der initialisierung wird sie zunächst mit einer stelle nach dem komma vom programm anzeigt (xxx.x eur). durch rundungsungenauigkeiten kommen neue nachkommastellen hinzu, je länger ich mit dem programm arbeite (xxx.xxxxxx eur). gibt es eine möglichkeit, das programm zu veranlassen, den wert immer genau auf 2 nachkommastellen auszugeben? vielen dank im voraus! - fox |
||
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
schau in der onlinehilfe unter:
- len - left- - right |
||
Fox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
vielleicht liegts an meiner geistigen maximalkapazität, die offensichtlich heute stark begrenzt ist...aber... kann mir jemand ein beispiel geben?
danke! |
||
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
sind doch beispiele dabei.
Neu$=LEFT$ (Text$, Anzahl) neu$ => der neu text (gekürtzt) text$ => der ursprüngliche zulange text/zahlen die gekürtzt werden sollen anzahl => die anzahl an zeichen die von links kopiert wersen sollen alles was daneben steht wird irgnoriet gelöscht. genaus des gleiche mit right nur halt von rechts, und len erittelt die maximale anzahl an zeichen. |
||
hot-bitGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hi,
dominik: du verstehst das falsch ... Er will RICHTIG gerundete Zahlen- Werte haben. Es gab hier mal schon eine Diskussion darüber und Lösungen ... Toni |
||
Jake |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Janaklar!
Function TrimFloat#(v#,digits%=2) local s$=Str(v#) local pointpos%=Instr(s$,".") Return (Float(Mid(s$,1,pointpos+digits))) End Function Achtung: Es wird NICHT gerundet, sondern nur abgeschnitten. Also besser nicht für Buchführung benutzen ![]() Jake |
||
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja dann soll er halt die letzten 3 zahlen lesen wenn er 2 haben will feststellen ob die 3 größer bzw kleiner 5 is und dann die 2 entsprechen ändern. | ||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm sone Rundungsfunktion hab' ich doch irgendwo hier liegen...
... Et voilà: Code: [AUSKLAPPEN] Function StellenRunden#( Zahl#, Stellen ) Return Int( Zahl * 10 ^ Stellen ) / Float( 10 ^ Stellen ) End Function Da wird sogar gerundet ![]() MfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Fox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
funktioniert holzchopf!
danke an alle, die geantwortet haben ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
runden mit Int( Zahl + 0.5 ) ist besser ![]() |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wiso? | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1,6 + 0,5 = 2 -> ok
1,8 + 0,5 = 2 -> ok 2,0 + 0,5 = 3 -> ??? ohoh 2,2 + 0,5 = 3 -> ??? ohoh ![]() |
||
hot-bitGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hello ..
Ich habe immer so gewerkt : Zitat: ; n=Stellen auf welche gerundet wird.
; Int(10^n*Zahl+.5)/10^n Cls a# = 100.45218 b# = Int(10 ^ 2 * a + .5) / 10 ^ 2 Print a Print b WaitKey End Vielleicht hilft das .. Toni |
||
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso hast du denn auch dieses +.5 drin?
Ich benutze auch eine solche Funktion wie Holzchopf.(nur dass ich bei mir kein float drin hab. Ich könnte mir diese +0.5 nur in Verbindung mit dieser funktion bei der nicht gerundet wird(also nur abgeschnitten) vorstellen |
||
- Zuletzt bearbeitet von Blatolo am Mi, Jul 21, 2004 12:36, insgesamt einmal bearbeitet
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Beim kaufmännischen Runden wird 0,5 auf 1 gerundet. Durch die Addition von 0,5 erhält man so einen Überlauf. Alles unter 0,5 führt zu keinem Überlauf und kann daher abgeschnitten werden, ohne dass die letzte Stelle um eins erhöht wird. Also
1,235 wird 1,24 1,234 wird 1,23 @ Fox: Vorsicht bei Anwendungen. Ich wollte ein Programm für's Büro machen, bin aber an dem Ergebnis von Multiplikationen mit mehreren Nachkommastellen gescheitert. Blitz rechnet nicht mit gleicher Genauigkeit wie z.B. VB! |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmmm...
Blitz tut sich beim Runden sowieso schwer, schaut euch mal das hier an: Code: [AUSKLAPPEN] Graphics 800,600,16,2 While Not KeyDown(1) Cls For a# = s To s+4 Step 0.1 b = ( a + 0.5 ) * 10 Zahl# = a v1 = Int(a) v2 = Floor(a+.5) v3 = Floor(b/10.0) v4 = Str(a+.5) If v1 = v2 And v3 = v4 And v1 = v3 Then Color 255,255,255 Else Color 255,0,0 EndIf Text 0, (a Mod 4) * 140, Zahl Text 100, (a Mod 4) * 140, v1 Text 150, (a Mod 4) * 140, v2 Text 200, (a Mod 4) * 140, v3 Text 250, (a Mod 4) * 140, v4 Next s = s + 4 WaitKey() Wend End (JA, in den roten Zeilen ist was faul) So wie's den Anschein hat, kann man in Blitz nur dann genau runden, wenn man String-Funktionen arbeitet (macht sich bei den höheren Zahlen, so ab 30, bemerkbar)... |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
hot-bitGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hi,
Ja, diese Diskussion hatten wir hier ja schon. BB hat hier gegenüber QBasic echt das Nachsehen. Mit der Methode, welche ich gepostet habe, wird in QBasic sehr genau gerechnet. In BB wird nicht so genau gerundet. Wahrscheinlich um die Geschwindigkeit von BB nicht zu beeinträchtigen. Bei Games braucht man soo genaue Zahlen ja nicht ! ![]() Toni |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
OJay hat Folgendes geschrieben: 1,6 + 0,5 = 2 -> ok
1,8 + 0,5 = 2 -> ok 2,0 + 0,5 = 3 -> ??? ohoh 2,2 + 0,5 = 3 -> ??? ohoh ![]() Nix OH DebugLog Int(2.0+0.5) WaitKey End sind bei mir 2 ! 2,7 sind bei mir 3 außerdem sollte es ja vorher mit *100 /100 benutzt werden ![]() |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Markus2 hat Folgendes geschrieben: Nix OH DebugLog Int(2.0+0.5) WaitKey End sind bei mir 2 ! 2,7 sind bei mir 3 außerdem sollte es ja vorher mit *100 /100 benutzt werden ![]() schön... DebugLog Int(2.1+0.5) WaitKey End ...gibt aber auch 3 ![]() Da ändert auch das *100/100 nix dran ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke mal dass wenn man dieses +0.5 anwendet man dann einfach nur die nachkommastellen abschneiden soll anstatt zu runden denn durch dieses +0.5 würde das dann richtige Ergebnisse liefern | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group