On Fri, Apr 3, 2009 at 03:02, Curiouslearn wrote:
> Hi,
> I want the labels as (0.5,0.55,0.6,0.65,0.7,...,1)
> or (0.50,0.55,0.60,0.65,0.70,...,1). Either of these two is fine.
> I tried the following code for this.
> \starttext
> \startuseMPgraphic{labeltest}
> numeric rmin,rmax;
> rmin := 0.5; rmax := 1;
> ux := 25cm; uy :=10cm;
> % draw axes
> draw (rmin,0)*ux -- (rmax+0.1,0)*ux;
> draw (rmin,0)*ux -- (rmin*ux,(1.1)*uy);
> for x = 0.5 step 0.05 until 1.1:
> label.bot(textext(decimal(x)),(x*ux,x*uy));
> endfor;
> \stopuseMPgraphic
> \useMPgraphic{labeltest}
> \stoptext
> I get (0.5,0.55, 0.6,0.65001,0.70001,0.75002,...,1.00003) instead. I don't
> understand why I get more than 2 digits after 0.6.

It's because you get exact numbers in the terms what metapost
considers exact (multiples of 2^{-something}). You have exactly the
same problem if you work with floating points with any other
programming language.

> Is there a way to
> restrict the number of digits after the decimal point.
> Thanks very much.

See page 18 of metapost manual (speaking of metapost manual present in
TeX Live):

-----
6.2 Operators

The length operator returns the number of characters in a string.
For substring construction, the ⟨of operator⟩ substring is used like this:
    substring ⟨pair expression⟩ of ⟨string primary⟩
substring (2,4) of "abcde" is "cd".
-----

You can use substring (0,4) to truncate the number. 0.5 might need
special treatment, so you either need to concatenate it with 0 at the
end or you need to check the lenght of string before using substring.

Mojca
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to