Rundung bei Multiplikation zweier Formularfelder
Rundung bei Multiplikation zweier Formularfelder
Hallo zusammen,
ich bin neu hier und habe ein ziemlich simples Problem und leider keine Lösung, da ich mich mit JS nicht gut auskennen.
Problem:
1. Ich multipliziere 2 Formularfelder (a und b) mittels vereinfachter Feldbezeichnung und werfe das Ergebnis in einem neuen dritten Formularfeld (c) aus.
2. Dieses neue Formularfeld (c) wird wiederrum mit einem anderen Formularfeld multipliziert (d) und das Ergebnis in einem neuen Feld (e) ausgegeben.
3. Alle Felder sind formatiert als "Zahl" mit "2 Dezimalstellen"
4. Es kommt nun vor, dass bei der Multiplikation von (a) und (b) ein Wert (c) rauskommt, der mehr als 2 Nachkommestellen hat, wobei nur die beiden ersten Nachkommastellen kaufmännisch gerundet dargestellt werden.
Beispiel:
(a) 0,06 x (b) 1234,75 = (c) 74,085 angezeigt als 74,09, was korrekt ist
5. Multipliziere ich jetzt (c) mit einem weiteren Wert (d), rechnet Acrobat nicht mit dem angezeigten Wert mit 2 Nachkommastellen, sondern mit dem Wert mit 3 Nachkommastellen, so dass augenscheinlich ein falsches Ergebnis herauskommt.
Beispiel:
(c) 74,09 x (d) 12 = (e) 889,02, was augenscheinlich falsch ist, da die Lösung 889,09 heissen müsste. Rechnerisch ist es doch richtig, da er im Hintergrund 74,085 x 12 rechnet.
Ich hoffe, ich konnte mein Problem rüberbringen.
Hat jemand einen Rat, wie ich sicherstellen kann, dass er bei Formularfeldern nur mit dem angezeigten Wert eines Feld rechnet und nicht im Hintergrund mitgeführte Nachkommastellen berücksichtigt?!?
Vielen Dank im Voraus und Grüße
Andreas
ich bin neu hier und habe ein ziemlich simples Problem und leider keine Lösung, da ich mich mit JS nicht gut auskennen.
Problem:
1. Ich multipliziere 2 Formularfelder (a und b) mittels vereinfachter Feldbezeichnung und werfe das Ergebnis in einem neuen dritten Formularfeld (c) aus.
2. Dieses neue Formularfeld (c) wird wiederrum mit einem anderen Formularfeld multipliziert (d) und das Ergebnis in einem neuen Feld (e) ausgegeben.
3. Alle Felder sind formatiert als "Zahl" mit "2 Dezimalstellen"
4. Es kommt nun vor, dass bei der Multiplikation von (a) und (b) ein Wert (c) rauskommt, der mehr als 2 Nachkommestellen hat, wobei nur die beiden ersten Nachkommastellen kaufmännisch gerundet dargestellt werden.
Beispiel:
(a) 0,06 x (b) 1234,75 = (c) 74,085 angezeigt als 74,09, was korrekt ist
5. Multipliziere ich jetzt (c) mit einem weiteren Wert (d), rechnet Acrobat nicht mit dem angezeigten Wert mit 2 Nachkommastellen, sondern mit dem Wert mit 3 Nachkommastellen, so dass augenscheinlich ein falsches Ergebnis herauskommt.
Beispiel:
(c) 74,09 x (d) 12 = (e) 889,02, was augenscheinlich falsch ist, da die Lösung 889,09 heissen müsste. Rechnerisch ist es doch richtig, da er im Hintergrund 74,085 x 12 rechnet.
Ich hoffe, ich konnte mein Problem rüberbringen.
Hat jemand einen Rat, wie ich sicherstellen kann, dass er bei Formularfeldern nur mit dem angezeigten Wert eines Feld rechnet und nicht im Hintergrund mitgeführte Nachkommastellen berücksichtigt?!?
Vielen Dank im Voraus und Grüße
Andreas
Rundung bei Multiplikation zweier Formularfelder
Hallo Andreas,
JavaScript bietet dir Math.round an. Das beschäftigt sich aber nur mir Ganzzahlen und bietet dir somit keine Dezimalstellen. Der Workaround ist:
this.rawValue = Math.round(a.rawValue * b.rawValue * 100) / 100
oder
var Nachkommastellen = 2 ;
this.rawValue = Math.round(a.rawValue * b.rawValue * Math.pow(10,Nachkommastellen)) / Math.pow( 10, Nachkommastellen)
Problem gelöst?
armine
JavaScript bietet dir Math.round an. Das beschäftigt sich aber nur mir Ganzzahlen und bietet dir somit keine Dezimalstellen. Der Workaround ist:
this.rawValue = Math.round(a.rawValue * b.rawValue * 100) / 100
oder
var Nachkommastellen = 2 ;
this.rawValue = Math.round(a.rawValue * b.rawValue * Math.pow(10,Nachkommastellen)) / Math.pow( 10, Nachkommastellen)
Problem gelöst?
armine
Rundung bei Multiplikation zweier Formularfelder
Hallo Armine,
danke für Deine Hilfe. Da ich ein totaler Newbie in Sachen JS bin, eine Frage:
Wo kommt der Code hin? Bei den Berechnungen ?
Gruß
Andreas
danke für Deine Hilfe. Da ich ein totaler Newbie in Sachen JS bin, eine Frage:
Wo kommt der Code hin? Bei den Berechnungen ?
Gruß
Andreas
Rundung bei Multiplikation zweier Formularfelder
Hallo Andreas,
Acrobat ist nun so ganz und gar nicht mein Ding. Vielleicht kann sich ein Acrobat-Kundiger deines Problems annehmen.
Die Eingabefelder sind [fontsize=3]a[/fontsize] und [fontsize=3]b[/fontsize], das Ausgabefeld [fontsize=3]ab[/fontsize]. Der Code in der JavaScript-Konsole ist:
this.getField("ab").value = Math.round(this.getField("a").value * this.getField("b").value * 100 + 0.00001) / 100
Dort funktioniert er auch, was das Ergebnis angeht – aber nach der Fehlermeldung:
a is not defined
1:AcroForm:ab_gerundet:CalculateAusnahmefehler in Zeile 1 der Funktion oberste_Ebene, Skript AcroForm:ab_gerundet:Calculate
2,25 * 3,26 = 7,335, aber nicht in JavaScript. Da kommt 7,334999999 heraus und so wird dann auch zu 7,33 gerundet. Um das zu kompensieren habe ich die Addition von 0.00001 eingefügt (Je 2 Dezimalstellen bei Multiplikand und Multiplikator führt zu max. 4 Dezimalstellen beim Produkt. Da wird die Addition in der 5. Dezimalstelle keinen Schaden anrichten.).
Hoffentlich kommst du nun zurecht.
armine
Acrobat ist nun so ganz und gar nicht mein Ding. Vielleicht kann sich ein Acrobat-Kundiger deines Problems annehmen.
Die Eingabefelder sind [fontsize=3]a[/fontsize] und [fontsize=3]b[/fontsize], das Ausgabefeld [fontsize=3]ab[/fontsize]. Der Code in der JavaScript-Konsole ist:
this.getField("ab").value = Math.round(this.getField("a").value * this.getField("b").value * 100 + 0.00001) / 100
Dort funktioniert er auch, was das Ergebnis angeht – aber nach der Fehlermeldung:
a is not defined
1:AcroForm:ab_gerundet:CalculateAusnahmefehler in Zeile 1 der Funktion oberste_Ebene, Skript AcroForm:ab_gerundet:Calculate
2,25 * 3,26 = 7,335, aber nicht in JavaScript. Da kommt 7,334999999 heraus und so wird dann auch zu 7,33 gerundet. Um das zu kompensieren habe ich die Addition von 0.00001 eingefügt (Je 2 Dezimalstellen bei Multiplikand und Multiplikator führt zu max. 4 Dezimalstellen beim Produkt. Da wird die Addition in der 5. Dezimalstelle keinen Schaden anrichten.).
Hoffentlich kommst du nun zurecht.
armine
Rundung bei Multiplikation zweier Formularfelder
Hallo Armine,
vielen Dank für die Hilfe, ich bin weitergekommen und habe im Acrobat die Möglichkeit gefunden, das Format eines Feldes mit JS zu bestimmen.
Allerdings habe ich noch zwei Probleme:
a) Er zeigt mir aktuell 3 Nachkommastellen an und rechnet auch mit Ihnen
b) Statt einem Komma erfolgt die Trennung der Dezimalstellen amerikanisch mit einem "."
Kannst Du mir auch da weiterhelfen?
Vielen Dank im Voraus und viele Grüße!
Andreas
vielen Dank für die Hilfe, ich bin weitergekommen und habe im Acrobat die Möglichkeit gefunden, das Format eines Feldes mit JS zu bestimmen.
Allerdings habe ich noch zwei Probleme:
a) Er zeigt mir aktuell 3 Nachkommastellen an und rechnet auch mit Ihnen
b) Statt einem Komma erfolgt die Trennung der Dezimalstellen amerikanisch mit einem "."
Kannst Du mir auch da weiterhelfen?
Vielen Dank im Voraus und viele Grüße!
Andreas
Rundung bei Multiplikation zweier Formularfelder
Hallo Andreas,
wie lautet den dein Script?
VG Merklin
wie lautet den dein Script?
VG Merklin
Rundung bei Multiplikation zweier Formularfelder
wie oben beschrieben, habe ich
this.rawValue = Math.round(a.rawValue * b.rawValue * 100) / 100
bzw.
var Nachkommastellen = 2 ;
this.rawValue = Math.round(a.rawValue * b.rawValue * Math.pow(10,Nachkommastellen)) / Math.pow( 10, Nachkommastellen)
benutzt und zwar bei der Feldformatierung.
Gruß
this.rawValue = Math.round(a.rawValue * b.rawValue * 100) / 100
bzw.
var Nachkommastellen = 2 ;
this.rawValue = Math.round(a.rawValue * b.rawValue * Math.pow(10,Nachkommastellen)) / Math.pow( 10, Nachkommastellen)
benutzt und zwar bei der Feldformatierung.
Gruß
Rundung bei Multiplikation zweier Formularfelder
Hallo Andreas,
verwendest du den LiveCycle Designer?
Ansonsten funktioniert dein Script nicht.
VG Merklin
verwendest du den LiveCycle Designer?
Ansonsten funktioniert dein Script nicht.
VG Merklin
Rundung bei Multiplikation zweier Formularfelder
Hallo Merklin,
ne Acrobat 9 prof. !
Gruß
ne Acrobat 9 prof. !
Gruß
Rundung bei Multiplikation zweier Formularfelder
Gibt es da nicht einfach ein Formatierungsskript a la "Runde auf 3 Nachkommastellen" und Ende?!?