Page 1 of 1

Print Using() / Round()

Posted: Thu May 12, 2005 7:10 pm
by PB&J Lover
Is there a text formating command like USING() in PB. I've not been able to locate it.

Here's how it works: P = USING("###.#", value.f)

so if value = 4.3452 then P will be 4.3.

This gives you a nice column when you print too.

Also, is there a Round() command that allows you to specify the number of decimals to round to?

Posted: Thu May 12, 2005 7:37 pm
by benny
There is a userlib called PrintUsing which should do the job :

http://www.purearea.net/pb/download/use ... tUsing.zip

[edit]
Alternately, there is an updated version by Danilo of the SkunkLib which
also includes a PrintUsing :

http://www.purearea.net/pb/download/use ... unklib.zip

[/edit]

libraries

Posted: Thu May 12, 2005 8:14 pm
by PB&J Lover
Thanks.

How do you use a library?


Is there something for rounding numbers to a specific decimal?


What's all in the SkunkLib?

Posted: Thu May 12, 2005 8:17 pm
by Num3
StrF(Value.f [, NbDecimal])

Convert a float number into a string. A maximum number of decimal places can be specified. The number isn't rounded, but simply truncated.

Re: libraries

Posted: Thu May 12, 2005 8:50 pm
by benny
dbwisc wrote:Thanks.
You are welcome ;-)

dbwisc wrote:How do you use a library?
Just copy the Lib (the file with no suffix) in your:

[...]/PureBasic/PureLibraries/Userlibraries/

Folder. Important is that you have to restart the compiler before
you want to use the new commands :!:

dbwisc wrote:Is there something for rounding numbers to a specific decimal?
Try Num3's trick.

dbwisc wrote:What's all in the SkunkLib?
In this version there are just the two commands

- StripAll(chain$ , search$ ) - Delete all the occurences of a string on
another string
-Using( "#0-+" , number ) - Format a number as a string


Generally, every lib has a .chm-Help file included which gives a detailed
description of every command.

You can find numerous userlibs on PureArea.net :

http://www.purearea.net

Skunk Using() ERROR

Posted: Thu May 12, 2005 9:15 pm
by PB&J Lover
There are no examples in the Skunklib for using decimals. When I tried them I got strange results.

This:

Code: Select all

Debug Using("#.##",3.456)
Should not return this: " . 3"

The other one gave me all kinds of linking errors, so I'm 0 to 2.

But thanks.

Posted: Fri May 13, 2005 9:22 am
by benny
@dbwisc:

You are right ... I never used those libs - I just know of their existence.
However they do not seem to support floats. I am sorry for any inconveniences.

Hmm ... guess someone has to write a proper routine for this case. Like
parsing the pattern and apply the float-string to it ...

A did a quick try - it contains a lot of bugs and unchecked exceptions :

Code: Select all

; Print Using work-around
; May 2oo5 by benny!
;
; Note:
; Just a quick test! 
; No syntax checking and so on ...


Procedure.s UsingF( fvalue.f, p$)

  a$      = StrF( fvalue.f )
  vMid.l  = FindString( a$, ".", 1 )
  pMid.l  = FindString( p$, ".", 1 )

  ;prefix part
  
  frA$    = Mid( a$, 1, vMid.l - 1 )
  frP$    = Mid( p$, 1, pMid.l - 1 )
  frA$    = Using( frP$, Val( frA$ ) )

  ;suffix part
  
  suA$    = Mid( a$, vMid.l + 1, Len(a$) - vMid.l )
  suP$    = Mid( p$, pMid.l + 1, Len(p$) - pMid.l )
  
  If Len( suA$ ) = Len( suP$ )
    ProcedureReturn frA$+"."+suA$
 
  ElseIf Len( suA$ ) > Len( suP$ )
    ProcedureReturn frA$+"."+Left(suA$, Len( suP$ ) )

  Else
    ProcedureReturn frA$+"."+Using ( suA$, Val ( suP$ ) )
  EndIf
     
EndProcedure


Debug UsingF(201.13, "0000.000")
Debug UsingF(20012.3012, "0000000000.0")