30

In a Tikz Figure, I'm doing some computation and want to print results as label of nodes. The problem is that I only need the integer part of the number to print.

I tried with round() function. It round the values correctly but they are printed with .0

\begin{tikzpicture}
   \foreach \i in {1,2,3,4,5,6} {
      \pgfmathparse{round(\i*100/3) }
       \let\theIntINeed\pgfmathresult
       \draw (\i,0) node {\theIntINeed};
   }
 \end{tikzpicture}
 % Results: 33.0 67.0 100.0 133.0 167.0 200.0

Thank you in advance.

33

\pgfmathparse always saves its result with a decimal part. You can either use \pgfmathprintnumber{\pgfmathresult} in the node text to output the number, which will remove the .0 for integers, or do the calculation using \pgfmathtruncatemacro\mymacro{round(\i*100/3)}, which will save the result of the calculation without the decimal part, and then use \mymacro in the node text.

51

You could also use the int function, which returns the integer part of the value, i.e.

\pgfmathparse{int(round(\i*100/3))}
1
  • 2
    This should be the actual answer. May 15 '17 at 17:00
9

Simply use \pgfmathtruncatemacro\theIntINeed instead of \pgfmathresult.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.