如何从 pgf/fpu 中获取数字的尾数和指数?

如何从 pgf/fpu 中获取数字的尾数和指数?

我需要从内部获取数字的尾数和指数pgf/fpu。我找到了@egreg的解决方案这里,但此解决方案在内部不起作用fpu

\documentclass[]{article}
\usepackage{pgf, tikz}
\usetikzlibrary{fpu}
\usepackage{xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\mantissa}{m}
 {
  \hafid_mantissa:f { \tl_lower_case:n { #1 } }
 }

\cs_new:Nn \hafid_mantissa:n
 {
  \__hafid_mantissa:www #1 ee \q_stop
 }
\cs_generate_variant:Nn \hafid_mantissa:n { f }

\cs_new:Npn \__hafid_mantissa:www #1 e #2 e #3 \q_stop
 {
  #1
 }

\DeclareExpandableDocumentCommand{\exponent}{m}
 {
  \hafid_exponent:f { \tl_lower_case:n { #1 } }
 }

\cs_new:Nn \hafid_exponent:n
 {
  \__hafid_exponent:www #1 ee \q_stop
 }
\cs_generate_variant:Nn \hafid_exponent:n { f }

\cs_new:Npn \__hafid_exponent:www #1 e #2 e #3 \q_stop
 {
  \tl_if_empty:nTF { #2 } { 0 } { #2 }
 }
\ExplSyntaxOff
\begin{document}

\pgfmathsetmacro{\N}{1e-4}
\pgfkeys{/pgf/fpu=true}
\pgfmathsetmacro{\C}{2*\N*pi*sin(90)}

\pgfmathparse{\C}\pgfmathprintnumber[sci, precision=2]{\pgfmathresult}

\mantissa{\C} % --- Wrong format of mantissa

\exponent{\C} % --- Wrong format of mantissa
\pgfkeys{/pgf/fpu=false}



\end{document}

在此处输入图片描述

答案1

你可以使用内置\pgfmathfloatparsenumber\pgfmathfloattomacro(参见部分56.4 命令参考和程序员手册请参阅 pgfmanual)。

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{fpu}
\begin{document}

\pgfmathsetmacro{\N}{1e-4}
\pgfkeys{/pgf/fpu=true}

\pgfmathsetmacro{\tmp}{2*\N*pi*sin(90)}
\pgfmathfloatparsenumber{\tmp}
\pgfmathfloattomacro{\pgfmathresult}{\F}{\M}{\E}

\M % mantissa

\E % exponent
\pgfkeys{/pgf/fpu=false}

\end{document}

相关内容