以下是代码。
\documentclass{article}
\usepackage{luacode}
\begin{document}
\luaexec{tex.sprint(string.format('\%.20f', math.pi))}
\end{document}
它的输出为
3.14159265358979311600
很容易看出的值pi
不正确。比较这里。小数点后 20 位的正确值为
3.14159265358979323846
luaTeX
这与或无关,luacode
因为在 中得到的答案相同。这与 的值的计算lua
方式有关。有没有办法在 luaTeX 或 lua 中获取 的正确值?lua
pi
pi
答案1
标准 Lua 使用 64 位整数和双精度(64 位)浮点数,但您也可以编译 Lua,使其使用 32 位整数和/或单精度(32 位)浮点数。整数和浮点数均为 32 位的选项对于小型机器和嵌入式系统尤其有吸引力。
使用双精度时,不能期望超过 15 位精确的小数,请参阅https://en.wikipedia.org/wiki/IEEE_754#Basic_and_interchange_formats
答案2
你可以通过该luamplib
包使用 Metapost 来做到这一点。
\documentclass{article}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\mplibnumbersystem{decimal}
\begin{document}
This is $\pi$:
\begin{mplibcode}
vardef getpi =
numeric lasts, t, s, n, na, d, da;
lasts=0; s=t=3; n=1; na=0; d=0; da=24;
forever:
exitif lasts=s;
lasts := s;
n := n+na; na := na+8;
d := d+da; da := da+32;
t := t*n/d;
s := s+t;
endfor
s
enddef;
beginfig(1);
draw textext(decimal getpi);
endfig;
\end{mplibcode}
\end{document}
但我认为手写数字可能会更容易!