如何通过在 \pgfmathprintnumber 中传递值来设置精度值

如何通过在 \pgfmathprintnumber 中传递值来设置精度值

我想创建一个宏,它将根据用户为计算设置的值来设置精度。我的宏在序言中使用 \newenvironment 定义

\newenvironment{calc}[1][1]{$\pgfkeys{/pgf/fpu,/pgf/fpu/output format=sci}
}
{ 
\pgfmathfloatparsenumber{\pgfmathresult}
\pgfmathprintnumber[precision=3]{\pgfmathresult}
\pgfkeys{/pgf/fpu=false}$}

并通过调用宏

\begin{calc}
\pgfmathparse{(1.45^2-1.40^2)/(1.55^2-1.45^2)}
\end{calc}

当我尝试通过设置值时

\pgfmathprintnumber[precision=#1]{\pgfmathresult}

它不起作用。

答案1

像这样吗?

\documentclass{article}
\usepackage{pgfplots}
\usepackage{calc}
\newcounter{Precision}
\newenvironment{calc}[1][1]{\setcounter{Precision}{#1}
$\pgfkeys{/pgf/fpu,/pgf/fpu/output format=sci}
}
{ 
\pgfmathfloatparsenumber{\pgfmathresult}
\pgfmathprintnumber[precision=\thePrecision]{\pgfmathresult}
\pgfkeys{/pgf/fpu=false}$}
\begin{document}
\begin{calc}
\pgfmathparse{(1.45^2-1.40^2)/(1.55^2-1.45^2)}
\end{calc}
\begin{calc}[5]
\pgfmathparse{(1.45^2-1.40^2)/(1.55^2-1.45^2)}
\end{calc}
\end{document}

相关内容