下面的例子:
\documentclass{article}
\usepackage{sagetex}
\begin{document}
\sage{0.1*0.1}
\end{document}
给出
这是完全不可取的。
简单的谷歌搜索显示 Sage 可以识别数字格式,例如
我该如何在 LaTeX 中利用这一功能?显然我不能写
\sage{"%.3f"%(.1*.1)}
由于 的特殊含义%
。
编辑
这个问题有两个独立的答案。不过,我想知道是否有任何官方的一次性分配格式的方法。也许像
\begin{sagesilent}
please print only two digits thank you
\end{sagesilent}
和
\begin{sagesilent}
from now on ten digits please
\end{sagesilent}
就像我们用来\pgfkeys{/pgf/number format/foo=bar}
配置一样\pgfmathprintnumber
。
答案1
作为手动的说:用于\percent
那个目的。
手册中的引述:
这\百分宏使每个人都快乐。
例如
\documentclass{article}
\usepackage{sagetex}
\begin{document}
\sage{"\percent.3f"\percent(.1*.1)}
\end{document}
给出
答案2
使用 Python 的一个优点sagetex
是,你可以获得 Python 以及所有其他数学能力,例如图论,内置函数等等。文档这里解释如何使用 .n(digits=k) 获取 k 位小数,从而获得精度的十进制数字。请注意,digits=1 是例外情况。
\documentclass[12point]{article}%
\usepackage{sagetex}% use Sage for it's math ability
\pagestyle{empty} % remove the page numbers
\begin{document}
The documentation says ``As an exceptional case, digits $=1$ usually leads
to $2$ digits (one significant) in the decimal output''\\\\
$\pi \approx \sage{pi.n(digits=2)}$ or \\
$\pi \approx \sage{pi.n(digits=3)}$ or \\
$\pi \approx \sage{pi.n(digits=8)}$ or, if you must, \\
$\pi \approx \sage{pi.n(digits=50)}$\\\\
You change the digits in the calculation so that $(0.1)(0.1)$ is
$\sage{(.1*.1).n(digits=2)}$..
\end{document}
不过,我不确定为什么 digits=2 最后会给出 0。
答案3
其他人提到了\percent
和 的使用.n()
,但我想提一下第三种方法,这种方法有点愚蠢,但有时对于更复杂的格式很有用。尝试以下方法:
\begin{sagesilent}
def twodigits(x):
return "%.3f" % x
# or, more in the Python 3 spirit:
def threedigits(x):
return "{:.3f}".format(float(x))
\end{sagesilent}
然后,在你的文本中,
blah $\sage{twodigits(.1 * .1)}$ blah
没有“官方”的方法来声明所有数字都显示到一定数量的小数,但您可以在文档中定义这样的函数并始终使用它来实现相同的结果。