As I said in response to your other question, you want to format the number to pretty-print it. In this case, I'm guessing the default format will be suitable, but you can obviously tune it according to your particular needs.

\documentclass[border=10pt,multi,tikz]{standalone}
\newcommand{\percentA}[2]
{%
\begin{tikzpicture}[xscale=18]
\foreach \x in {0,1,...,#2}
{
\node at (\x/#2,0.45) {\x}; % Whole numbers
\draw [very thick] (\x/#2,0)--(\x/#2,0.25); % Whole number tick marks
}
\draw[very thick] (0,0)--(1,0); % x axis
\foreach \x in {0,...,100} % Hundredths tick marks
\draw (\x/100,-0.1)--(\x/100,0);
\foreach \x in {0,1,2,...,10}
{
\draw[thick] (\x/10,-0.18)--(\x/10,0); % Tenths tick marks
\pgfmathsetmacro{\tenspercents}{int(\x*10)}
\node at (\x/10,-0.6) {\tenspercents \%};
\node at (\x/10,-1) {of #2};
\pgfmathsetmacro{\myresult}{\tenspercents/100*#2}
\node at (\x/10,-1.4) {is \pgfmathprintnumber{\myresult}};
}
\end{tikzpicture}%
}
\begin{document}
\percentA{20}{5}
\end{document}
The default maths stuff is never going to be accurate. If you need accuracy, you can use floating point, for example. But I doubt that is really needed for grade 2 maths (assuming this is still for your second graders). Just printing the numbers to make them prettier is all that's really required.
EDIT
This part of my answer uses a corrected version of the alternative version of \percentA
which you posted later. Unlike the first version, this only uses 1 argument and your example only gave 1 argument. Unfortunately, like the first version, it still demanded 2.
Also note that both versions introduce spurious spaces. I corrected this above and have annotated the corrections for the alternative version below.
Also also note that you should not include a comma in the argument you expect pgfmath
to parse as a number. This will create problems. For example, the number cannot be formatted correctly afterwards because it contains alien stuff. Again, I corrected that above and repeat the correction with an annotation below.
The code below is designed to demonstrate a few of the various most-relevant-to-second-grader ways in which a number can be formatted by pgfmath
. For other options, such as scientific formats, see TikkZ's manual where the options are extensively described.
The following gives the output of
\percentA{5}
for a single definition of \percentA{}
. That is, the numbers being printed are the same in every case. All that changes are relevant settings for /pgf/number format
, as given in the code which follows.

Remember: the series of values held by \result
are identical for each of the number lines, because the definition of \percentA{}
is held constant. What changes is the effect of the macro \pgfmathprintnumber{}
when fed the series of values in \result
as arguments.
\documentclass[border=10pt,multi,tikz]{standalone}
\newcommand{\percentA}[1]% if you are only going to give one argument, don't say you'll give two
{% avoid introducing spurious spaces
\begin{tikzpicture}[xscale=18]
\foreach \x in {0,1,...,#1}
{
\node at (\x/#1,0.45) {\x}; % Whole numbers
\draw [very thick] (\x/#1,0)--(\x/#1,0.25); % Whole number tick marks
}
\draw[very thick] (0,0)--(1,0); % x axis
\foreach \x in {0,...,100} % Hundredths tick marks
\draw (\x/100,-0.1)--(\x/100,0);
\foreach \x in {0,1,2,...,10}
{
\draw[thick] (\x/10,-0.18)--(\x/10,0); % Tenths tick marks
\pgfmathsetmacro{\tenspercents}{int(\x*10)}
\node at (\x/10,-0.6) {\tenspercents \%};
\node at (\x/10,-1) {of #1};
\pgfmathsetmacro{\result}{\tenspercents/100*#1}% comma is not part of number!!
\node at (\x/10,-1.4) {is \pgfmathprintnumber{\result}};
}
\end{tikzpicture}% avoid introducing spurious spaces
}
\begin{document}
\percentA{5}
\tikzset{%
/pgf/number format/.cd,
fixed,
precision=2,
}
\percentA{5}
\tikzset{%
/pgf/number format/.cd,
fixed zerofill,
}
\percentA{5}
\tikzset{%
/pgf/number format/.cd,
precision=0,
}
\percentA{5}
\tikzset{%
/pgf/number format/.cd,
int trunc,
}
\percentA{5}
\end{document}
\result
?