我目前正在处理一些带有pgfplots
和的数据集pgfplotstable
。
有时,我需要存储一些单元格值以供多次使用,因此我使用调用\pgfmathsetmacro{\somevar}{\pgfplotsretval}
。但是,这两个值之间存在一些精度问题。
有人能澄清这个问题吗?
这是 MWE
\documentclass[tikz,border=1mm,10pt]{standalone}
\usepackage{pgfplots,pgfplotstable}
\pgfplotsset{compat=newest}
\usepackage{filecontents}
\begin{filecontents*}{testfile.csv}
A, B
1, 0.19959E-002
\end{filecontents*}
\begin{document}
\pgfplotstableread[col sep=comma]{testfile.csv}{\testdata}
\pgfplotstablegetelem{0}{B}\of\testdata
\pgfmathsetmacro{\valueinB}{\pgfplotsretval}
\begin{tikzpicture}
\node (a) at (0,0) {\pgfplotstabletypeset[string type]{\testdata}};
\node at (0,-1cm) {Value of pgfplotsretval \pgfplotsretval};
\node at (0,-1.5cm) {Value of pgfmathsetmacro \valueinB};
\end{tikzpicture}
\end{document}
答案1
这就是使用和不使用的区别fpu
。至于你在本地使用它的问题:有几种方法,但在\pgfmathsmuggle
添加到之后,事情变得更加方便。(如果你无法编译以下内容,那么你很可能使用的是旧版本的 pgf。我还认为,如果你使用,即而不是仅仅使用pgf
,你在评论中提到的错误就会消失。)fixed
\pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}
\pgfkeys{/pgf/fpu=true}
\documentclass[tikz,border=1mm,10pt]{standalone}
\usepackage{pgfplots,pgfplotstable}
%\usetikzlibrary{fpu}
\pgfplotsset{compat=newest}
\usepackage{filecontents}
\begin{filecontents*}{testfile.csv}
A, B
1, 0.19959E-002
\end{filecontents*}
\begin{document}
\pgfplotstableread[col sep=comma]{testfile.csv}{\testdata}
\pgfplotstablegetelem{0}{B}\of\testdata
\begingroup\pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}%
\pgfmathsetmacro{\valueinB}{\pgfplotsretval}%
\pgfmathsmuggle\valueinB%
\endgroup
\begin{tikzpicture}
\node (a) at (0,0) {\pgfplotstabletypeset[string type]{\testdata}};
\node at (0,-1cm) {Value of pgfplotsretval \pgfplotsretval};
\node at (0,-1.5cm) {Value of pgfmathsetmacro \valueinB};
\end{tikzpicture}
\end{document}