Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Rundungsfehler bei \pgfmathsetmacro

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.02.2011
    Beiträge
    17

    Question Rundungsfehler bei \pgfmathsetmacro

    Hallo

    Ich möchte eine LaTeX-Vorlage für Rechnungen verwenden. Ich habe dabei folgendes Minimalbeispiel verwendet.

    Code:
    \documentclass[11pt,ngerman]{article}
    \usepackage{mathpazo}
    \usepackage[T1]{fontenc}
    \usepackage[latin9]{luainputenc}
    \pagestyle{empty}
    
    \makeatletter
    
    \usepackage{pgf}
    \usepackage{numprint}
    \nprounddigits{2}
    
    \makeatother
    
    \usepackage{babel}
    \begin{document}
    \newcommand{\netto}{1700}
    \newcommand{\steuersatz}{20}
    
    \pgfmathsetmacro\brutto{(1+\steuersatz/100)*\netto}
    \pgfmathsetmacro\ust{\brutto-\netto}
    
    Summe Netto = \numprint{\netto} \\
    Umsatzsteuer {\steuersatz} \% = \numprint{\ust} \\
    Gesamt brutto = \textbf{\numprint{\brutto}}  \\
    \end{document}
    Bei der Berechnung kommt es allerdings zu einem mir unerklärlichen Rundungsfehler. Wenn ich die obige Formel in einen Taschenrechner eintippe, kommt das erwartete Ergebnis von 2040 € brutto heraus. Bei der Berechnung mit \pgfmathsetmacro kommt allerdings stets 2039,99 € heraus. Wo könnte hier der Fehler liegen?

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Die normale Rechengenauigkeit von pgfmath ist eher mäßig. Es gibt dazu diverse Hinweis in der pgf-Anleitung beispielsweise in der Einleitung zur Fixed-Point-Arithmethic-Library aber auch in der Einleitung zur Math Library selbst.

    Alternativ kann man Berechnungen auch in Lua durchführen (lualatex) vorausgesetzt.

    luainputenc sollte man übrigens eher nicht verwenden. Das ist nur eine Notlösung für den Fall dass man keine vernünftigen Fonts hat und keine native utf8-Codierung verwenden kann. Das sollte die absolute Ausnahme sein! Und natürlich lässt man dann auch gleich das Paket fontenc weg und verwendet bei Bedarf fontspec zum Laden und Verwalten von Fonts.
    Geändert von klops (13-06-2018 um 16:48 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Ich würde dafür entweder lua oder \fpeval vom xfp-Paket verwendet. Beide rechnen deutlich besser.

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.02.2011
    Beiträge
    17

    Thumbs up

    Vielen Dank für die Antwort. Ich habe \fpeval verwendet und nun ist die Berechnung, so wie man es sich vorstellt.

    Code:
    \FPset\netto{1700}
    \FPset\steuersatz{20}
    
    \FPeval\brutto{(1+\steuersatz/100)*\netto}
    \FPeval\ust{\brutto-\netto}

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    \FPeval ist aus dem alten fp-Paket. Ich schrieb von \fpeval aus dem neuen xfp (das von expl3/interface3 kommt).

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •