how to format decimals?
[1/4] from: sags::apollo::lv at: 25-Apr-2005 17:17
Hi, Rebolers! How to format decimals to show the given number of decimal fraction digits? F.ex.: format 2.3 3 => 2.300 brgds Janeks
[2/4] from: SunandaDH:aol at: 25-Apr-2005 10:50
> Hi, Rebolers! How to format decimals to show the given number of decimal > fraction digits? F.ex.: format 2.3 3 => 2.300
Here's a very quick and dirty method, that reuses oneliner-nfrac.r in the REBOL.org library -- not optimal in terms of runtime performance, but an example of software reuse: nfrac: func [d][length? second parse join d ".." "."] format: func [number [decimal!] length [integer!] /local res ][ res: form number n: nfrac number if n > length [return copy/part res (length? res) - (n - length) ] loop length - n [append res "0"] res ]
>> for n 0 5 1 [print format 1.23 n]
1. 1.2 1.23 1.230 1.2300 1.23000 Sunanda.
[3/4] from: volker:nitsch:gm:ail at: 25-Apr-2005 17:11
On 4/25/05, [SunandaDH--aol--com] <[SunandaDH--aol--com]> wrote:
> Janeks: > > Hi, Rebolers! How to format decimals to show the given number of decimal
<<quoted lines omitted: 10>>> if n > length [return copy/part res (length? res) - (n - length) ] > loop length - n [append res "0"]
insert/dup tail res "0" length - n ;)
> res > ]
<<quoted lines omitted: 5>>> 1.2300 > 1.23000
And while looking at it, another way (only short tested): ; digs must be >= 1 ! format: func [num digs] [ int: to-integer num frac: num - int frac: form to-integer 10 ** digs * frac ;rebol-order ;) insert/dup tail frac "0" digs - length? frac rejoin ["" int "." frac] ] for n 0 5 1 [print format 1.23 n] gives 1.0 ;wrong, but keeps func shorter 1.2 1.23 1.229 1.2300 1.23000
> Sunanda. > -- > To unsubscribe from the list, just send an email to > lists at rebol.com with unsubscribe as the subject. >
-- -Volker Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem. David Wheeler
[4/4] from: greggirwin::mindspring::com at: 25-Apr-2005 9:46
Hi Janeks, sal> Hi, Rebolers! How to format decimals to show the given number of sal> decimal fraction digits? F.ex.: format 2.3 3 => 2.300 There is nothing like that built in, unfortunately. Eric Long did a formatter, which doesn't seem to be in the library. My old notes say that it didn't work as expected when I tried it--OK for single values, but not for blocks--maybe due to newer REBOL releases doing something different. Eric's design is modeled on sprintf, which isn't really my cup of tea. I have a start on one myself, but it doesn't support custom formats at this time (didn't need them myself when I built it). I can send either, or both, to you if you want. I don't want to post Eric's to REBOL.org if it's broken though. In the meantime, here's a quick hack for your specific need: ; NOT LOCALIZED! pad-decimal: func [value [decimal!] len [integer!] /local s] [ s: form value head insert/dup tail s #"0" len - ((length? s) - index? find s #".") ] -- Gregg
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted