Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Zahlen runden - nur zwei stellen anzeigt nach dem koma :-)

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Skripter
•->
•->


Anmeldedatum: 01.10.2001
Beiträge: 18

BeitragVerfasst am: 03.10.2001 - 13:46    Titel: Zahlen runden - nur zwei stellen anzeigt nach dem koma :-) Antworten mit Zitat

set x to text returned of (display dialog "Bitte geben sie den betrag ein" default answer "")
try -- falls keine Zahl eingegeben wurde
set x to x as real
on error
display dialog "Sie sollten doch eine Zahl eingeben!!!"
end try
set x to x / 1.95583
set y to x * 1.95583
(display dialog "EURO    " & y & return & "DM   " & x)

ich hätte gerne das es nur zwei stellen anzeigt nach dem koma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 03.10.2001 - 19:07    Titel: Zahlen runden Antworten mit Zitat

Hallo Skripter,

ich habe mal etwas experimentiert.

set x to text returned of (display dialog "Bitte geben sie den Betrag ein" default answer "" )
try -- falls keine Zahl eingegeben wurde
set x to x as real
on error
display dialog "Sie sollten doch eine Zahl eingeben!!!"
end try

set y1 to x / 1.95583 -- reguläre Division

set y2 to x div 1.95583 -- ganzzahliges Ergebnis

set z to (y1 - y2) as string -- Nachkommastellen
set z1 to ((characters 1 thru 4) of z as string) as real
if character 5 of z as real > 5 then
set z1 to z1 + 0.01
end if

set y3 to y2 + z1

(display dialog "EURO " & x & return & "DM " & y3)


Zunächst einmal: x ist der Eurobetrag (der Wert, der im Dialog eingegeben wurde)

In der drittletzen Zeile rechnest du den Betrag um. In der vorletzten Zeile musst du ihn dann wieder zurückrechnen.

Einfacher wäre gewesen:
set y to x / 1.95583

Nun zu meiner Version:
Es wird zunächst einmal die normale Division (mit Nachkommastellen) durchgeführt. Danach folgt eine Division, die nur ein Ergebnis ohne Nachkommastellen liefert.

set y2 to x div 1.95583

Beide Werte voneinander abgezogen bringen den Nachkomma-Wert.
Dieser wird temporär in einen Textwert umgewandelt, die ersten 4 Zeichen daraus werden weiterverwendet. Nun erfolgt noch die Prüfung, ob die 5. Stelle > 5 ist. Ist das der Fall, wird zum (bereits wieder in eine Dezimalzahl gewandelten) Wert der Nachkommastellen noch 0.01 hinzugezählt.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 01.03.2003 - 14:12, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 03.10.2001 - 19:24    Titel: Zahlen runden Antworten mit Zitat

Noch ein Nachtrag:

Das Rundungsverhalten kann natürlich bei der if-Abfrage angepasst werden.

if character 5 of z as real > 4 then
set z1 to z1 + 0.01
end if


So wird bereits ab 5 aufgerundet.

Die Standard Additions bieten zwar auch eine Rundungsmöglichkeit. Jedoch ist dort das Ergebnis immer eine Ganzzahl.

Result: integer -- the rounded value

Zu erwähnen wäre noch folgendes:

Den Teil, der bei einer Division mit 'div' wegfällt, kann man so ermitteln:

set y to x mod 1.95583
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 01.03.2003 - 14:14, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Juergi
•->
•->


Anmeldedatum: 02.10.2001
Beiträge: 4

BeitragVerfasst am: 04.10.2001 - 07:30    Titel: Zahlen runden Antworten mit Zitat

Um "mal eben schnell" auf 2 Nachkommastellen zu runden, kann auch die Standard-Applescript Funktion "round" mit einem Trick verwendet werden:

Der Befehl

(round(x * 100)) / 100)

rundet die Zahl x auf 2 Nachkommastellen.

Man muß nur aufpassen, das bei sehr großen Zahlen der Wert aus den Datenbereich rutschen kann, und so Ungenauigkeiten entstehen. Je mehr Nachkommastellen gebraucht werden, desto schlimmer der Effekt.


(Geändert von Juergi am 8:59 Uhr am 4 Okt. 2001)
_________________
J¸rgen Venne
L. N. Schaffrath Druckmedien
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 04.10.2001 - 22:42    Titel: Zahlen runden Antworten mit Zitat

Ich habe mich heute nochmal mit der Zahlenrundung beschäftigt. Die bisher geposteten Möglichkeiten funktionieren leider mit höheren Zahlen nicht, da AppleScript dann auf die wissenschaftliche Darstellung wechselt.

set dieZahl to 1.2345987E+4

Eine funktionierende Lösung habe ich gleich in einen entsprechenden Artikel im Praxisteil verpackt.

Hier geht's lang...
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 01.03.2003 - 14:15, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
macgix
•--->
•--->


Anmeldedatum: 13.12.2000
Beiträge: 206
Wohnort: K–ln

BeitragVerfasst am: 05.10.2001 - 00:34    Titel: Zahlen runden Antworten mit Zitat

Ich galube, das steht auch in einem der Guidebook Module und sieht so aus. Zwei Sachen sind zu beachten. Vor dem DIV muss der Wert leicht erhöht werden, damit keine Rechen-(Rundungs)fehler auftreten und ohne DIV und MOD geht es auch nicht:

on RoundConvertTruncate(this_number, the_number_of_decimal_places)

if the_number_of_decimal_places is 1 then
set this_number to this_number + 0.05
else if the_number_of_decimal_places is 2 then
set this_number to this_number + 0.005
else if the_number_of_decimal_places is 3 then
set this_number to this_number + 5.0E-4
end if

set first_part to TextToNum(this_number div 1)

if the_number_of_decimal_places is 1 then
set second_part to (this_number mod 1) div 0.1
if second_part is 0 then set second_part to "0"
else if the_number_of_decimal_places is 2 then
set second_part to (this_number mod 1) div 0.01
if second_part < 10 then set second_part to ( "0" & second_part as text) as string
else if the_number_of_decimal_places is 3 then
set second_part to (this_number mod 1) div 1.0E-3
if second_part < 10 then
set second_part to ( "00" & second_part as text) as string
else if second_part < 100 then
set second_part to ( "0" & second_part as text) as string
end if
if second_part is 0 then set second_part to "000"
end if

set theTotal to (first_part & "." & second_part as string)
return theTotal

end RoundConvertTruncate


_________________
[macgix]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter