Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
K.I.T.T.
Anmeldungsdatum: 24.01.2005 Beiträge: 79
|
Verfasst am: 05.09.2005, 13:59 Titel: komische Buchstaben und Zahlen *G* |
|
|
Moin,
also, ich mach grade ein sinnloses Programm, so mit Formelsammlungen und so. Also, ich bin bei der Zinsrechnung, da hab ich ein Problem. Also, da es ja um genaue Zahlen geht, hab ich den '#' Typ genommen (ich glaub das ist Double oder Long... *G*), jedenfalls, wenn ich jetzt alle Eingaben eingegeben habe (Startkapital, Laufzeit und Zinssatz), dann schreibt das Programm das Ergebnis hin und da unter dann den Rechenweg. Dann steht das z.B. folgendes:
"
Endkapital = ((Startkapital * (Zinssatz/100)) * Laufzeit) + Startkapital
Für deine Eingaben gilt: Endkapital = ((23 * (3/100)) * 65) + 23
Endkapital = ((23 * 3.e-002) * 65) + 23
"
So, also kurze Erklärung: Ich hab jetzt erstmal die Grundformel aufgeschrieben, da unter kam dann die Formel bezogen auf die Eingaben (also nur Zahlen einsetzen...), da unter fange ich dann an, so langsam die Klammer aufzulösen, also hab ich erstmal die 3 durch 100 geteilt. Jetzt steht da aber "3.e-002". Was ist das und wa hat das zu bedeuten? Und wie bekomme ich das wieder weg? Danke schonmal im Voraus.
Gruß K.I.T.T. |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 05.09.2005, 16:58 Titel: |
|
|
Also zu erst: # bedeutet DOUBLE.
So, wenn im Ausdruck e vorkommt, steht er im Exponentialformat.
=> Schreibe ihn mit PRINT USING in eine temporäre Datei, und lade ihn dann wieder
als String, damit die Umwandlung zum Exponentialformat nicht stattfindet:
Code: |
function zahl$ (wert as double)
f = freefile
open "tmp.dat" for output as #f
print #f, using "#####.########"; wert
close #f
f = freefile
open "tmp.dat" for input as #f
input #f, z$
close #f
zahl$ = z$
end function
|
Nicht getestet, sollte aber klappen.
jb |
|
Nach oben |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 10.09.2005, 20:52 Titel: |
|
|
Moin,
alos - was soll der Umweg mit der Datei?
Man kann auch so print using schreiben.
Beispiel:
Code: | print using "##.##"; 3.2534;"##.###";3.2343;
?"huhu2" |
e steht für zehn hoch
2.0 e-02 ist also 2 * 10 ^(-2) oder 2 / 10² also 0.02
CU2
Tilli |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 11.09.2005, 11:13 Titel: |
|
|
Aber dann hat man den Wert auf dem Bildschirm. Wenn man ihn später wieder anzeigen möchte,
ist es wohl einfacher,
zu schreiben, als jedes Mal mit
Code: | print using "##.###"; w% |
anzukommen - alleine schon der Übersichtlichkeit willens.
jb |
|
Nach oben |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 11.09.2005, 13:02 Titel: |
|
|
hm ... man sollte in der Tat eine Funktion dafür zur Verfügung stellen ... Ich denke der Umweg über eine Datei ist nicht ganz so prall ... wenngleich eine Lösung...
mal sehen ob das auch anders geht:
Code: |
function TextFormat(byval doub as double,byval afterpoint as integer ) as string
dim st as string
?doub
doub*=10^afterpoint
?doub
if doub=int(doub) then
doub+=.1
?"is int";doub
else
doub=doub*10
?"is no int";doub
doub= int (doub)
? doub
doub= doub/10
end if
? "c|";doub
doub/=(10^afterpoint)
'now the variable has exactly one more then the wished number of numbers after the point - so we can take one from the back of the part to the left
'this is necessary to provide the e stuff
? "d|";doub
st=str$(doub)
? "e|";st
if afterpoint >= 0 then
TextFormat=left$(st,len(st)-1)'with comma
else
TextFormat=st'without comma
end if
end function
? "10^0=";10^0
dim n as double
dim s as string
n=556.345266666
? n
? "now format to x.x"
s=TextFormat(n,1)
? s
sleep
|
das Ergebnis:
Zitat: |
10^0= 1
556.345266666
now format to x.x
556.345266666
5563.45266666
is no int 55634.5266666
55634
c| 5563.4
d| 556.3399999999999
e|556.3399999999999
556.339999999999
|
irgendwie scheint er nicht durch 10 teilen zu können ... wenn da jemand was zu weis, bitte sagen ... Für die negativen Werte sollte man auch noch eine Bessere Lösung finden ...
CU2
Tilli
[/list][/code] |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 11.09.2005, 14:44 Titel: |
|
|
Warum nicht mit einer temporären Datei?
Die hat doch noch nichtmals 1KB.
jb |
|
Nach oben |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 11.09.2005, 15:48 Titel: |
|
|
Moin,
@jb
was ist, wenn das Stammverzeichnis nun zufällig schreibgeschützt ist? (z.B. CD)
zudem interessirt mich, warum
5563.4 / (10^1) = 556,33999999 ist - habe ich da einen dieser Pentums mit Rechenfehler bekommen? ... Eher unwahrscheinlich - es bubbert als Herz meiner Maschiene ein Athlon 2100 ... Wenngleich es recht nah dran ist ...
CU2
Tilli |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 11.09.2005, 16:20 Titel: |
|
|
tilli hat Folgendes geschrieben: | zudem interessirt mich, warum
5563.4 / (10^1) = 556,33999999 ist - habe ich da einen dieser Pentums mit Rechenfehler bekommen? |
siehe QB-Monster-FAQ |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 11.09.2005, 16:38 Titel: |
|
|
Dreael hat das auch mal recht gut erklärt.
Geht ziemlich ins Detail, aber wenns dich interessiert is es nur zu empfehlen.
Leider kann ich dir die URL nicht mehr sagen; aber am besten fragst du ihn einfach selbst danach. _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 11.09.2005, 16:47 Titel: |
|
|
Moin,
@Sebastian
THX - Das sollte immer gut funken - Ich hatte schon daran gedacht, cons: oder so zu verwenden. (siehe Open-Befehl)
Frage ist aber eher, warum man die existierende Funktion nicht abgreifen kann ...
@Tomtitom
ebenfals ein Dickes TTHHXX ich hatte vergessen, dass 10=2*5 ist - und 1/5 ist in Binärcode ebenfalls ... hm ... Unendlich ?
Frage ist nur, warum es keine Möglichkeit gibt auf sowas zu runden .... oder bin ich da einfach zu blöd den round_about Befehl zu finden ...
Besser wohl ich baue das Komma selbst ein Irgendwie macht das Programm das ja auch
CU2
Tilli |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2510 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 11.09.2005, 20:36 Titel: |
|
|
tilli hat Folgendes geschrieben: | Moin,
@Tomtitom
ebenfals ein Dickes TTHHXX ich hatte vergessen, dass 10=2*5 ist - und 1/5 ist in Binärcode ebenfalls ... hm ... Unendlich ?
Frage ist nur, warum es keine Möglichkeit gibt auf sowas zu runden .... oder bin ich da einfach zu blöd den round_about Befehl zu finden ...
Besser wohl ich baue das Komma selbst ein Irgendwie macht das Programm das ja auch
CU2
Tilli |
manmanman, du strotzt ja nur so vor Ironie und Sarkasmus, vor allem zu meinen Postings
Ich habe leider nicht immer den Ironiefinder an und bei deinem ursprünglichen Posting kann ja wohl keiner riechen, wie du es nun meintest.
Auf Nachkommastellen runden gibt es meines wissens nicht, da musst du dir wohl selbst was bauen. |
|
Nach oben |
|
|
d.j.peters Gast
|
Verfasst am: 12.09.2005, 02:59 Titel: |
|
|
K.I.T.T. hat Folgendes geschrieben: |
Endkapital = ((Startkapital * (Zinssatz/100)) * Laufzeit) + Startkapital
Für deine Eingaben gilt: Endkapital = ((23 * (3/100)) * 65) + 23
Endkapital = ((23 * 3.e-002) * 65) + 23
...erstmal die 3 durch 100 geteilt. Jetzt steht da aber "3.e-002". |
Alles das gleiche
3e+2 = 2 Stellen nach rechts 300.0
3e-2 = 2 Stellen nach links 0.03
Wenn man feinere Rundungen braucht bzw. nicht drauf verzichten möchte wie Banken und andere kaufmänische Anwendungen dann benutzt man BCD Zahlen.
In BCD nimmt man die Dezimalziffern einer Zahl und wandelt diese einzeln in 4-Bit Binärdarstellung um.
Beispiele:
8 wird zu 1000
10 wird zu 0001 0000
947 wird zu 1001 0100 0111
Wenn Du es brauchen kannst dann googel mal nach BCD Spezifikation.
Grüsse Joshy |
|
Nach oben |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 12.09.2005, 14:50 Titel: |
|
|
Tomtitom hat Folgendes geschrieben: |
manmanman, du strotzt ja nur so vor Ironie und Sarkasmus, vor allem zu meinen Postings
Ich habe leider nicht immer den Ironiefinder an und bei deinem ursprünglichen Posting kann ja wohl keiner riechen, wie du es nun meintest.
|
also wenn ich bei'm latschen deinen fuß erwischt haben sollte: sorry - is definitiv nicht persönlich gemeint... Und meine Sarkastische Ader ... die hab' ich nunmal - ist besser als ewiger Bierernst und keiner hört mehr zu ... finde ich zumindest .... meist mache ich bei sowas einen klienen hin oder so - dadurch sollte man meieserachtens wissen, wie ich das meine. bin halt auf'm Bau groß geworden ...
Auf der anderen Seite bin ich der Meinung, dass jeder (auch du) seine Meinung sagen sollte. Und wenn man sich denn mal vertut ... egal. Is ja kein Beinbruch. Und das besser war immer schon Feind des guten AND wer keine Fehler mach, dar arbeitet auch nicht ... OGOTT - wir sind in der Sprüchekiste angekommen - ich mach mal ganz schnell Ende, das was ich sagen wollte sollte rübergekommen sein.
CU2
Tilli |
|
Nach oben |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 12.09.2005, 20:52 Titel: |
|
|
schon in Ordnung
Das kleine Missverstaendnis beruht sicher auch darauf, dass du halt noch nicht lange hier bist, bzw. ich dich noch nicht kannte, haette ja auch erst sein koennen, dass du ein QBNeuling bist, aber jetzt habe ich wohl rausgekriegt, dass du so einiges auf dem Kasten hast.
Demzufolge betrachte ich dich jetzt von unten |
|
Nach oben |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 13.09.2005, 11:08 Titel: |
|
|
Moin
Tomtitom hat Folgendes geschrieben: | ... aber jetzt habe ich wohl rausgekriegt, dass du so einiges auf dem Kasten hast.
|
THX
Ich hab's (doch) nur für Euch gemacht
CU2
Tilli |
|
Nach oben |
|
|
|