将数字转换为科学计数法

将数字转换为科学计数法

我有一些 Matlab 输出的数字,我想将它们显示为 LaTeX 中的表格。这些数字的形式为0.141909496562531180000.01234e-3,我想以科学计数法显示它们。我如何查找/编写一个宏,该宏的调用方式类似于\scn{0.14190949656253118000}\scn{0.01234e-3},结果为$1.41x10^{-1}$$1.23x10^{-5}$。请注意,小数点后的位数应该是可配置的。

答案1

根据鲍里斯的回答:

\documentclass{article}
\usepackage[scientific-notation=true]{siunitx}
\listfiles
\begin{document}

%\num{0.14190949656253118000}
\num{0.1419094965}

\end{document}

在此处输入图片描述

但是,对于您的特定数字,低于 2.4n 的 siunitx 版本会返回“数字太大”错误,除非您将数字四舍五入(正如您最初指出的那样,但我忘记了)。这促使我编写了以下 MATLAB 函数,该函数将以您想要的精度打印您的数字的 LaTeX 代码:

函数 s=pp(x,n)
% 以科学计数法漂亮地打印一个值
% 使用情况: s=pp(x,n)
% 其中:xa浮点值
% n 是所需的小数位数
%s 是 x 的字符串表示形式,带有 n 位小数,并且
% 指数 k
exponent=floor(log10(abs(x))); %适应负值
尾数=x/(10^指数);
s=sprintf('$%*.*f \\times 10^{%d}$',n+3,n,尾数,指数);
% 返回类似 '$1.42 \times 10^{-1}$' 的内容

例子:

>> s1=pp(0.14190949656253118000,2)
s1 =
$1.42 \times 10^{-1}$
>> s2=pp(0.01234e-3,3)
s2 =
$1.234 \times 10^{-5}$

但是,siunitx 和 Boris 的答案的任何最新版本对于四舍五入的数字都可以正常工作,并且 siunitx 2.4n 即使没有四舍五入也可以正常工作。

答案2

\num例如来自的宏希尼奇就是这样。例如

\documentclass{article}
\pagestyle{empty}
\usepackage{siunitx}
\begin{document}
\num[round-precision=2,round-mode=figures]{0.1419094};
\num[round-precision=2,round-mode=figures,
     scientific-notation=true]{0.1419094};
\num[round-precision=2,round-mode=figures,
     scientific-notation=true]{0.1419094e-6};
\num[round-precision=2,round-mode=figures,
     scientific-notation=engineering]{0.1419094e-6}
\end{document}

在此处输入图片描述

请注意,输入的数字过多可能会导致错误“数字太大”。

\num此外,可以使用 为所有数字设置中的可选参数\sisetup

相关内容