包含大数字的工作表

包含大数字的工作表

我正在尝试制作一些心算练习表,例如

80 万亿的 25% 是 ___

似乎pgfand/orpgfmath无法做到这一点,因为数字太大了。代码可以使用较小的数字进行编译。

我该怎么做?

当我弄清楚发生了什么事时,我会切换到生成练习和解决方案工作表的随机数,但我相信下面的 MWE 证明了这个问题。

\documentclass{article}

\usepackage{pgf}
\usepackage{pgfmath}

\pagestyle{empty}


\begin{document}

\pgfmathsetmacro{\Product}{int(20000*50000)}

\Product

\end{document}

在此处输入图片描述

答案1

您可以使用xfpxint。对于上述目的,它们的优点是它们可以产生可扩展的表达式。pgf也可以与fpu库一起使用(也可以fixedpointarithmetic与包一起使用库fp,但后者可能被 取代xfp)。这是一个例子。

\documentclass{article}

\usepackage{xfp}

\pagestyle{empty}


\begin{document}

\fpeval{20000*50000}

\end{document}

在此处输入图片描述

答案2

免责声明:这仅适用于 LuaTeX 并且仅适用于整数。

如果你想使用任意精度的整数,那么纯 Lua 模块可以很好地处理其他困难的情况lua-nums。您需要下载bn.lua并将其放在与您的主文件相同的文件夹中。

我避免解析,但你可以看看液化石油气了解更高级的示例。目前,基本操作(+-*/^、)和二元运算符(、、、、 )应该可以工作,尽管将特殊字符传递给 Lua 有点麻烦。//在繁琐的输入和操作速度之间需要权衡,因为运行流畅。%&|>><<~|lua-nums

\documentclass{article}
%\usepackage{geometry}
%\geometry{paperwidth=100mm,paperheight=85mm,margin=2em}
\usepackage{luacode}
\begin{luacode*}
userdata = userdata or {}
--bn.lua should be in the same folder as \jobname.tex
userdata.bn = require"bn"
userdata.evaluatebn = function(s)
    return load("return ".. s:gsub("%d+", "userdata.bn(%1)"))()
end
\end{luacode*}
\newcommand{\evaluatebn}[1]{\directlua{tex.sprint(tostring(userdata.evaluatebn("#1")))}}
\begin{document}
\section{Rationale}
In Spanish and English (long scale), a trillion stands for $10^{18}$: \evaluatebn{10^18}.

%Integer division, so // and / are interchangeable
25\% of 80 trillion (long scale) is \evaluatebn{80*10^18//4}

25\% of 80 trillion (short scale) is \evaluatebn{80*10^12//4}

\section{Some other examples}
\begin{itemize}
\item $2^{70} = \evaluatebn{1 << 70}$
% \string& instead of Lua's &
\item $47542121789123 = 4\times\evaluatebn{(47542121789123 >> 2)} + \evaluatebn{(47542121789123 \string& 3)}$
\item $15! = \evaluatebn{1*2*3*4*5*6*7*8*9*10*11*12*13*14*15}$
% \csstring\% instead of Lua's %
\item $47542121789\% 4787973 = \evaluatebn{(47542121789 \csstring\% 4787973)}$
\end{itemize}
\end{document}

在此处输入图片描述

相关内容