Rechnen mit pgf, Ergebnis "zu" ungenau

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Rechnen mit pgf, Ergebnis "zu" ungenau

von esdd » Di 17. Sep 2013, 12:47

sudo hat geschrieben:PS: Ich brauchte noch pgffor um das Beispiel zum laufen zu bringen. Ist das bei euch anders?
Bei mir ist es ebenfalls so, dass pgffor nicht automatisch von pgf geladen wird.

von sudo » Di 17. Sep 2013, 10:56

So schlimm ungenau sind die Ergebnisse ja gar nicht, man muss halt nur die Rechengenauigkeit von TeX beachten und entsprechend runden. Das kann man zum Beispiel mit \pgfmathprintnumber:
\documentclass{article} 
\usepackage{pgf} 
\usepackage{pgffor}

\begin{document}
\noindent
\def\myarraynote{{0.85,0.7,0.55,0.45,0.35,0.3}}%
\foreach \i in {0,1,2,3,4,5}{\pgfmathparse{multiply(20,\myarraynote[\i])}\pgfmathprintnumber[precision=3]{\pgfmathresult}\\} 
\end{document}
PS: Ich brauchte noch pgffor um das Beispiel zum laufen zu bringen. Ist das bei euch anders?

von StefanB » Mo 16. Sep 2013, 18:03

OK, danke. Ich schau mir das mal an.

Wobei ich eh am Überlegen, die Rechnung von ExcelCalc durchführen zu lassen...Ich will eh Daten von Calc nach TeX exportieren, und dann kann ich die Rechenergebnisse auch gleich mitexportieren...

von esdd » Mo 16. Sep 2013, 16:20

TeX rechnet wirklich nicht so genau, weshalb es zu Rundungsfehlern kommen kann. Etwas genauer als pgfmath ist fp:
\documentclass[parskip=full-]{scrartcl} 
\usepackage{pgffor}
\usepackage{pgfmath}
\usepackage{fp}

\begin{document} 

\def\myarraynote{{0.85,0.7,0.55,0.45,0.35,0.3}}

Mit pgfmath:
\foreach \i in {0,...,5} 
  {\\ \pgfmathparse{multiply(20,\myarraynote[\i]} \pgfmathresult} 

\vspace{1cm}
Mit fp:
\foreach [evaluate=\i as \j using {\myarraynote[\i]}] \i in {0,...,5} 
  {\\ \FPeval\resultfp{\j*20} \resultfp}

\end{document}
Gruß
Elke

Rechnen mit pgf, Ergebnis "zu" ungenau

von StefanB » Mo 16. Sep 2013, 12:10

Hallo,

ich versuche gerade mir mit pgf ein kleines Makro zu schreiben, dass mir einen Notenschlüssel abhängig von max. Punktzahl und gewählten "Prozentschritt" erstellt und das ganze in eine Tabelle schreibt...

Das Problem ist das Runden auf die 0.5.

Aber zunächst stehe ich vor dem Problem, dass pgf "unsauber" rechnet. Ich habe folgendes definiert:
\documentclass{article}
\usepackage{pgf}

\begin{document}

\def\myarraynote{{0.85,0.7,0.55,0.45,0.35,0.3}}
\foreach \i in {0,1,2,3,4,5} 
{ \pgfmathparse{{multiply(20,\myarraynote[\i]}} \pgfmathresult \\}
\end{document}


Die erste Rechnung: 20*0.85=17, also wirklich 17. pgf berechnet aber 17.00012

Wieso?

Oder bin ich da auf einem falschen Weg und könnte das ganze einfacher realieren?

Nach oben