Calcite | Level 5

## SAS Function to check whether the field value is decimal or numeric

Hi,

Is there a SAS fucntion to check whether the field value is numeric or decimal. Please anyone can advise?

Regards,

Siva

1 ACCEPTED SOLUTION

Accepted Solutions
SAS Super FREQ

## Re: SAS Function to check whether the field value is decimal or numeric

if int(TOTAL_SUM) ^= TOTAL_SUM then

TOTAL_SUM = TOTAL_SUM*100;

8 REPLIES 8
SAS Super FREQ

## Re: SAS Function to check whether the field value is decimal or numeric

Can you explain more and give an example? Do you mean integer values versus having a decimal part?

If so, you can test whether int(x)=x.

Calcite | Level 5

## Re: SAS Function to check whether the field value is decimal or numeric

Hi Rick,

For e.g If I have the values for the column in the dataset as follows.

TOTAL_SUM

156

134.67

147

190.00

I need to find if the value of TOTAL_SUM is decimal then I have to do some manipulation based on that?

Super User

## Re: SAS Function to check whether the field value is decimal or numeric

What is your definition of decimal? What manipulation do you need to do? What do you want your output to look like?

Calcite | Level 5

## Re: SAS Function to check whether the field value is decimal or numeric

Hi Reeza,

For e.g If have a decimal point(.) in the value then I would like to multiply only those value with 100.

Regards,

Siva

SAS Super FREQ

## Re: SAS Function to check whether the field value is decimal or numeric

if int(TOTAL_SUM) ^= TOTAL_SUM then

TOTAL_SUM = TOTAL_SUM*100;

Calcite | Level 5

## Re: SAS Function to check whether the field value is decimal or numeric

Hi Reeza,

For e.g the following decimal values have to be multiplied by 100.

134.67 -> 134.67 *100 -> 13467

Regards,

Siva

Calcite | Level 5

Thanks Rick

Quartz | Level 8

## Re: SAS Function to check whether the field value is decimal or numeric

Irrespective of the number of decimal places,if you want to multiply the number with 100 then you can use the following code.

data Want;

input Total_Sum;

if scan(Total_Sum,2,'.') ne " " then Total_Sum=Total_Sum*100;

cards;

156

134.67

147

190.00

;

If there is condition on which the number should be multiplied basing on the number of decimal places(i.e multiply with 100 if the value has two decimal places and 10 for 1 decimal place ....) then you can use the following code

data Want;

input Total_Sum;

if lengthn(scan(Total_Sum,2,'.')) ge 2 then Total_Sum=Total_Sum*100;

if lengthn(scan(Total_Sum,2,'.')) eq 1 then Total_Sum=Total_Sum*10;

cards;

156

156.1

134.67

147

190.00

;

Discussion stats
• 8 replies
• 16875 views
• 3 likes
• 4 in conversation