编辑

编辑

下面的例子:

\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

没有“官方”的方法来声明所有数字都显示到一定数量的小数,但您可以在文档中定义这样的函数并始终使用它来实现相同的结果。

相关内容