I can't speak about STATA. In Stata, which behaves
similarly in this instance, you can get rounding up
by using -ceil()-.
But note that you will find it difficult to avoid
small (apparent) anomalies whatever you do.
This because, in general, multiples of 0.1 cannot
be held exactly in binary, as explained many, many
times on this list.
Suppose I have 8.75 (meaning, precisely, 8 + 3/4).
Stata can hold that, _exactly_. In decimal,
. di %23.18f 8.750
8.750000000000000000
or, more to the point, in hexadecimal,
. di %21x 8.750
+1.1800000000000X+003
If I round that, Stata starts to struggle:
. di %21x round(8.750, 0.1)
+1.199999999999aX+003
. di %23.18f round(8.75,0.1)
8.800000000000000700
This raises the question of what, exactly, is
the number you are showing us which is (which
is represented as!) 8.750. Your number is,
I surmise, not exactly 8.750, as if it were
it would round to 8.8.
That said, there is no way you can avoid this kind of
problem by writing your own program, unless
you also construct a decimal-based computer.
Nick
n.j.cox@durham.ac.uk
Siyam, Amani
> I have a minor issue with the way STATA is rounding, for example a
> variable to one decimal place.
>
> I used the command
>
> gen x=round(y, 0.1)
>
> Comparing the two variables, I noticed the that when:
>
> x= y=
>
> 8.750 8.7
> 5.752 5.8
> 23.256 23.3
>
> Is there a way I can modify the function to round "x"=8.750 to be 8.8
>
> Or should I put together my own code to get the rounding I want.
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/