在 TikZ 中打印 3 位小数而不使用标准形式

在 TikZ 中打印 3 位小数而不使用标准形式

我正在尝试使用 3 个十进制数字来显示从 0 到 1 的标尺。因此我希望标尺看起来像这样:

0.000 0.001 0.002 0.003 ..... 0.010 0.011

等等。

由于这个太长,无法放在一页中,我计划将其分成几页,并且我将这段代码用于第一页

\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1.0cm,y=1.0cm]

\draw[ultra thick,color=black] (0,0) -- (26,0);
\foreach \x[evaluate=\x as \text using \x*0.001] in {0,1,2,3,...,40}{
    \draw[shift={(\x*0.65,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[yshift = -20pt,rotate = 270] { 
         \pgfmathparse{\x*0.001}\pgfmathprintnumberto[precision=1] {\pgfmathresult}{\pgfmathresult} \pgfmathresult };
}
\end{tikzpicture}

运行此代码后我得到以下输出

在此处输入图片描述

是否有可能获得非标准形式而是书面示例中显示的数字?

是否可以使循环更简单,而不使用评估,而只执行如下操作:

\draw[shift={(\x*0.65,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[yshift = -20pt,rotate = 270] { \x*0.001 };
}

谢谢

答案1

我不太明白\pgfmathparse既然您已经使用了 ,为什么还要有这些东西。只需在文本中evaluate使用。禁用科学计数法。使用而不是来获取。\pgfmathprintnumber[fixed,precision=3]{\text}nodefixed\pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}0.0000.0

您不能\x*0.001直接在节点文本中使用,因为它不会被解析为数字,它只是文本。您可以说node[...]{\pgfmathparse{\x*0.001}\pgfmathprintnumber[fixed,precision=3]{\pgfmathresult}};,但我会说evaluate更干净。

在此处输入图片描述

\documentclass[border=4mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line cap=round]
\draw[ultra thick,color=black] (0,0) -- (26,0);
\foreach \x[evaluate=\x as \text using \x*0.001] in {0,...,40}{
    \draw (\x*0.65,2pt) -- ++(0,-4pt)
       node[below=3pt,anchor=west,align=left,rotate = 270] 
          {\pgfmathprintnumber[fixed,fixed zerofill,precision=3]{\text}};
}
\end{tikzpicture}
\end{document}

相关内容