\pgfmathsetmacro 和 \pgfplotsretval 之间的精度差异

\pgfmathsetmacro 和 \pgfplotsretval 之间的精度差异

我目前正在处理一些带有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}

在此处输入图片描述

相关内容