LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (January 2000, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Wed, 12 Jan 2000 13:48:04 -0500
Reply-To:     Howard Schreier <Howard_Schreier@ITA.DOC.GOV>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Howard Schreier <Howard_Schreier@ITA.DOC.GOV>
Subject:      Re: the first digit of the number
Content-Type: text/plain; charset=US-ASCII

Here's a solution which does no numeric-to-character conversion, explicit or implicit.

The treatment of values in the zero-one range excluding endpoints is a little rough, but it's not clear to me what is actually wanted there.

data numbers; input number; if number = 0 then firstdig = 0; else firstdig = int(abs(number)/10**int(log10(abs(number)))); put number= firstdig=; cards; 3.5 1000 0 1 456 .123 -.00034 -5 ;

Result:

NUMBER=3.5 FIRSTDIG=3 NUMBER=1000 FIRSTDIG=1 NUMBER=0 FIRSTDIG=0 NUMBER=1 FIRSTDIG=1 NUMBER=456 FIRSTDIG=4 NUMBER=0.123 FIRSTDIG=0 NUMBER=-0.00034 FIRSTDIG=0 NUMBER=-5 FIRSTDIG=5

"Primak, Philip" wrote: > > Dear SAS-L, > > I have to get the first digit of the number. Is there something more simple > and elegant than > > firstdgt=input(substr(scan(put(number,best8.),1),1,1),best8.); > > Thanks, > Philip Primak > Genzyme Corp.


Back to: Top of message | Previous page | Main SAS-L page