在 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.000代替0.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}

相關內容