我正在尝试创建心算工作表,将数学事实从 6*7=___ 扩展为 6*700000=_________ 之类的。
显然,PGF 和/或 TeX 无法处理大于 16000 的数字。[我觉得这很奇怪;我觉得这是一种 1953 年计算机程序员可能会遇到的问题。]
对此最简单的解决办法是什么?
我找到了两个相关的帖子(链接1,链接2)我想知道我是否应该:
- 坚持这些主题,开始摆弄
\ifnum
计数器、、\exp13
和\fpeval
等。[不知道这些是什么]。主题中的解释对我来说有点专业术语,但我可以处理。这需要一段时间,但到目前为止,我已经学到了很多关于、LaTeX
和TikZ
的知识。PGF
- 找到另一个资源来告诉我这些命令的作用。
- 寻找一些更简单的第三种方法来编写工作表来处理这些(相当简单的)计算。
谢谢!
\PowerOfTen
当其他数字变得太大以致超过~16000 时,此代码无法编译。
\documentclass{article}
\usepackage{pgf}
\pgfmathsetseed{\number\pdfrandomseed}
\newcommand{\InitVariables}
{\pgfmathrandominteger{\FactorA}{1}{10}
\pgfmathdeclarerandomlist{PowerOfTen}{{1}{10}{100}{1000}{10000}}
\pgfmathrandomitem{\PowerOfTen}{PowerOfTen}
\xdef\PowerOfTen{\PowerOfTen}
\pgfmathrandominteger{\FactorBInteger}{1}{10}
\pgfmathsetmacro{\FactorB}{int(\FactorBInteger*\PowerOfTen)}
\pgfmathsetmacro{\Product}{int(\FactorA*\FactorB)}
}
\setlength{\parindent}{0cm}
\begin{document}
\section*{Scaled Up Times Tables Exercises}
\InitVariables
FactorA = \FactorA
FactorBInteger= \FactorBInteger
PowerOfTen = \PowerOfTen
FactorB = \FactorB
FactorA x FactorB = Product
\(\FactorA\times\FactorB=\Product\)
\end{document}
答案1
您可以打开浮点单元库以获得额外的精度(当前 PGF 手册第 54 章)。
\documentclass{article}
\usepackage{pgf}
\usepgflibrary{fpu}
\pgfmathsetseed{\number\pdfrandomseed}
\newcommand{\InitVariables}{
\pgfkeys{/pgf/fpu}
% OPTIONAL: Output format: float, sci, fixed
% DEFAULT: float
\pgfkeys{/pgf/fpu/output format=float}
\pgfmathrandominteger{\FactorA}{1}{10}%
\pgfmathdeclarerandomlist{PowerOfTen}{{1}{10}{100}{1000}{10000}}%
\pgfmathrandomitem{\PowerOfTen}{PowerOfTen}%
\pgfmathrandominteger{\FactorBInteger}{1}{10}%
\pgfmathsetmacro{\FactorB}{int(\FactorBInteger*\PowerOfTen)}%
\pgfmathsetmacro{\Product}{int(\FactorA*\FactorB)}%
% These two will only work with output format=float, otherwise comment out
\pgfmathfloattoint{\FactorB}\pgfmathresult\let\FactorB\pgfmathresult%
\pgfmathfloattoint{\Product}\pgfmathresult\let\Product\pgfmathresult%
\pgfkeys{/pgf/fpu=false}%
}
\setlength{\parindent}{0cm}
\begin{document}
\section*{Scaled Up Times Tables Exercises}
\InitVariables
FactorA = \FactorA
FactorBInteger= \FactorBInteger
PowerOfTen = \PowerOfTen
FactorB = \FactorB
FactorA x FactorB = \Product
\(\FactorA\times\FactorB=\Product\)
\end{document}
我觉得这是一个 1953 年的计算机程序员可能会遇到的问题。
再过二十年,TeX 就已经这么古老了。