我需要从内部获取数字的尾数和指数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}