使用 \pgfmathsetmacro 时 Tikz 出现较大值错误

使用 \pgfmathsetmacro 时 Tikz 出现较大值错误

我有以下 MWE

\documentclass{article}
\usepackage{tikz}


\begin{document}

\begin{tikzpicture}[{x=(1mm, 0)},{y=(0,1mm)}]
%-> DEFINITIONS
\def\plthgt{50}                         % plot height
\pgfmathsetmacro\pltstp{\plthgt/4}      % plot step value

%-> DRAWING THE PLOT
\draw[thick]
    (0, 0)--
        (0, \plthgt)
    ;

\foreach \y in {0, \pltstp, ..., \plthgt}
    \pgfmathsetmacro\yvalue{4000*\y/\plthgt}
    \draw
        (0, \y)--
            (-2, \y)
            node[left]{\yvalue}
        ;
\end{tikzpicture}



\end{document}

我正在尝试绘制这个:

在此处输入图片描述

当我执行\pgfmathsetmacro\yvalue{4*\y/\plthgt}和时,我得到了相当接近的结果node[left]{\yvalue 00},但由于打印不方便0.000,并且剩余值带有.分隔符。

有针对这种情况的解决方案吗?谢谢!

答案1

只需改变运算顺序即可。即先计算商,然后乘以:

\pgfmathtruncatemacro\yvalue{4000*(\y/\plthgt)}

为了获取整数,请使用\pgfmathtruncatemacro

\documentclass{article}
\usepackage{tikz}


\begin{document}

\begin{tikzpicture}[{x=(1mm, 0)},{y=(0,1mm)}]
%-> DEFINITIONS
\def\plthgt{50}                         % plot height
\pgfmathsetmacro\pltstp{\plthgt/4}      % plot step value

%-> DRAWING THE PLOT
\draw[thick]
    (0, 0)--
        (0, \plthgt)
    ;

\foreach \y in {0, \pltstp, ..., \plthgt}
    \pgfmathtruncatemacro\yvalue{4000*(\y/\plthgt)}
    \draw
        (0, \y)--
            (-2, \y)
            node[left]{\yvalue}
        ;
\end{tikzpicture}



\end{document}

在此处输入图片描述

如果你想要达到更高的价值,你需要做出额外的努力,例如

\documentclass{article}
\usepackage{tikz}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic} 

\begin{document}

\begin{tikzpicture}[{x=(1mm, 0)},{y=(0,1mm)}]
%-> DEFINITIONS
\def\plthgt{50}                         % plot height
\pgfmathsetmacro\pltstp{\plthgt/4}      % plot step value

%-> DRAWING THE PLOT
\draw[thick]
    (0, 0)--
        (0, \plthgt)
    ;
\begin{scope}[/pgf/fixed point arithmetic]
\foreach \y in {0, \pltstp, ..., \plthgt}
 {
    \pgfmathtruncatemacro\yvalue{40000*(\y/\plthgt)}
    \draw
        (0, \y)--
            (-2, \y)
            node[left]{\yvalue}
        ;}
\end{scope}     
\end{tikzpicture}

\end{document}

相关内容