我正在尝试将一些数字相乘,这些数字最终会出现在图表的图例中。我无法让它工作:
如果我天真地尝试
\pgfmathmultiply
,我会得到一个dimension too large
错误,代码如下微波能量吸收 1(见下文)。我理解这是因为 TeX 不计算 18 英寸(左右)以外的尺寸。好的,我需要加载,如(版本 2.10)fpu
第 36 节中所述。pgfmanual
如果我传递
/pgf/fpu
给轴环境,编译会失败Illegal unit of measure (pt inserted)
(微波辐射计 2)。即使轴环境完全是空的。根据“如何使用 pgfmathdeclarefunction 来定义新的 pgf 函数?“,在内部pgfplots
使用fpu
,所以我不太明白为什么我无法加载它。我想,也许我使用了错误的函数。在 PGF 手册的第 362 页上,我读到安装会将标准数学解析器的所有例程与 FPU 的例程进行交换:
\pgfmathadd
将被替换为\pgfmathfloatadd
等等。此外,任何数字都将被解析为\pgfmathfloatparsenumber
。那么,如果我已经有了 FPU,也许我需要改用\pgfmathfloatmultiply
?我尝试过微波辐射计 3,但这次编译失败:!软件包 PGF 数学错误:抱歉,浮点单元的内部例程收到格式错误的浮点数“1000”。无法读取的部分接近“1000”。。可能\pgfmathmultiply
不是为了让用户使用的,或者如此。
如何将大数字相乘并在其中显示结果pgfplot
?
相关但不同的问题:
最大能量损失 1:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title={\pgfmathmultiply{1000}{1000}}
]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}
微波辐射计 2
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[/pgf/fpu,
title={\pgfmathmultiply{1000}{1000}}
]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}
微波辐射计 3:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title={\pgfmathfloatmultiply{1000}{1000}}
]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
PGFplots 在内部使用该fpu
库,但并非用于所有用途。在用户级别,该fpu
库未激活。您可以\pgfkeys{/pgf/fpu=true}
在使用常规命令进行数学运算之前手动设置\pgfmathparse{...}
。完成后,您需要fpu
再次关闭该库,否则 PGFplots 会感到困惑,因为该fpu
库使用浮点表示数字,而不是定点表示。您可以通过以下方式查看它的样子
\pgfkeys{/pgf/fpu=true}
\pgfmathparse{1000*1000}
\pgfmathresult
\pgfkeys{/pgf/fpu=false}
这将打印1Y1.0e6]
。您可能不希望在标题中使用该表示形式,因此您应该设置\pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}
,这将使数学运算的输出为定点数,或者使用\pgfmathprintnumber{\pgfmathresult}
来打印结果,这将使用定点表示形式,即使对于浮点输入也是如此。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title={\pgfkeys{/pgf/fpu=true}
\pgfmathparse{1000*1000}
\pgfmathprintnumber{\pgfmathresult}
\pgfkeys{/pgf/fpu=false}}
]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}