[REBOL] roundoff? Re:(2)

2000-07-19 Thread ralph

yes... rounding.r is nice... anyway, my routine works well enough for the
purpose I required... but it would be nice to see a rounding function
included in REBOL.

--Ralph

> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, July 19, 2000 2:44 AM
> To: [EMAIL PROTECTED]
> Subject: [REBOL] roundoff? Re:
>
>
> Hi,
>
> see also www.rebol.org/math/rounding.r
>
> > I needed a simple two decimal place round off function for a
> script this
> > evening.
> >
> > This is what I came up with:
> >
> > roundoff: func ["Rounds off to 2 decimal places" a][
> > a: a * 100
> > b: a - to-integer a
> > a: to-integer a
> > if b > .5 [a: a + 1]
> > a: divide a 100
> > ]
> >
> > Here's how it works:
> >
> > >> roundoff 10.567890
> > == 10.57
> > >> roundoff 10.56
> > == 10.56
> >
> > Can anyone improve on this, or is there a function already in
> REBOL I
> > overlooked?
> >
> > Okay, yes, to-money does it:
> >
> > >> to-money 10.567
> > == $10.57
> > >> to-money 10.563
> > == $10.56
> >
> > but I want the decimal! type.
> >
> > --Ralph Roberts
> >
> >
> >
>





[REBOL] roundoff? Re:

2000-07-19 Thread lmecir

Hi,

see also www.rebol.org/math/rounding.r

> I needed a simple two decimal place round off function for a
script this
> evening.
>
> This is what I came up with:
>
> roundoff: func ["Rounds off to 2 decimal places" a][
> a: a * 100
> b: a - to-integer a
> a: to-integer a
> if b > .5 [a: a + 1]
> a: divide a 100
> ]
>
> Here's how it works:
>
> >> roundoff 10.567890
> == 10.57
> >> roundoff 10.56
> == 10.56
>
> Can anyone improve on this, or is there a function already in
REBOL I
> overlooked?
>
> Okay, yes, to-money does it:
>
> >> to-money 10.567
> == $10.57
> >> to-money 10.563
> == $10.56
>
> but I want the decimal! type.
>
> --Ralph Roberts
>
>
>




[REBOL] roundoff? Re:

2000-07-18 Thread larry

Hi Ralph

To really do correct rounding for all possible decimal values requires a bit
of work in REBOL.  Problems with overflow, round nearest even, etc.  For all
the gory details see the script decimal.r archived at rebol.org. But just
for fun here is a way to use to-money. May fail to give correct results with
decimal! input too large in magnitude or with too many digits of precision.

>> round: func [x][to-decimal replace to-string to-money x "$" ""]
>> round 1.0051
== 1.01
>> round 1.0049
== 1
>> round -1.0049
== -1
>> round -1.0051
== -1.01

BTW This works better than your roundoff function for negative values:

>> roundoff -1.0051
== -1

Cheers
-Larry

- Original Message -
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, July 18, 2000 6:57 PM
Subject: [REBOL] roundoff?


> I needed a simple two decimal place round off function for a script this
> evening.
>
> This is what I came up with:
>
> roundoff: func ["Rounds off to 2 decimal places" a][
> a: a * 100
> b: a - to-integer a
> a: to-integer a
> if b > .5 [a: a + 1]
> a: divide a 100
> ]
>
> Here's how it works:
>
> >> roundoff 10.567890
> == 10.57
> >> roundoff 10.56
> == 10.56
>
> Can anyone improve on this, or is there a function already in REBOL I
> overlooked?
>
> Okay, yes, to-money does it:
>
> >> to-money 10.567
> == $10.57
> >> to-money 10.563
> == $10.56
>
> but I want the decimal! type.
>
> --Ralph Roberts
>
>