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