FormatPercent ( Number ; Decimals )
Rate this function: Average rating: 4.5 (37 votes) Discuss this Custom Function
Will Loving, Dedication Technologies, Inc.
http://dedicationtechnologies.com
Formats a number as a percentage text string with specified number of decimal places
Sample Input:
FormatPercent ( .4587 ; 1 ) 

Sample Output:

Description:
Formats a number value as a percentage in a text string with the specified number of decimal places, from 0 to 10. Useful for calculated text strings that need to include a formatted percentage.
17 Jan 2011  modified to address issue noted by Jeremiah Hammond.
Note: these functions are not guaranteed
or supported by BrianDunning.com. Please contact the individual
developer with any questions or problems.
This is my Custom Function and I want to
edit it
Discuss:Make a comment about this Custom Function (please try to keep it brief & to the point). Anyone can post:

Newest Custom Functions:
1. 
decFromHex ( hexValue ) 

(Mon, Oct 16, 12:34pm) 
2. 
MonthYearList ( startmonth ; startyear ; numbermonth ; short ) 

(Mon, Oct 16, 3:38am) 
3. 
ErrorDescription ( errorNumber ) 

(Wed, Sep 27, 2:51am) 
4. 
decodeEntities (text) 

(Wed, Sep 27, 1:22am) 
5. 
HexidecimalToNumber ( HexidecimalValue ; counter ) 

(Mon, Sep 25, 12:39pm) 
6. 
FixedFieldConverter ( Fieldname ; f1 ; f2 ; f3 ; f4 ; f5 ; f6 ; f7 ; f8 ; f9 ; f10 ; f11 ; f12 ; f13 ; f14 ; f15 ; f16 ; f17 ; f18 ; f1 

(Fri, Sep 15, 12:34pm) 
7. 
ShannonEntropy ( text ) 

(Thu, Sep 07, 5:59am) 
8. 
LetterCount ( text ; summary ) 

(Thu, Sep 07, 5:53am) 


The current version (as of 01/17/2011) fails with the following input: FormatPercent( .1304 ; 1 ). It'll return 1300% instead of 13.0%. The issue has to do with the ending case statement, where the rounded percent  integer of the rounded percentage happens to equal 0, instead of some decimal (say: 13.0  13). The function will attach zeros to the whole number portion of the percentage without a decimal.
Here's a fixed version of the function:
Case ( Decimals = 0 or IsEmpty ( Decimals ) ; Int ( Round ( Number * 100 ; 0 ) ) ;
Int ( Round( Number * 100 ; Decimals ) ) &
Case ( ( Number * 100 ) = Int ( Number * 100 ) ; Left ( ".0000000000" ; Decimals + 1 ) ;
Round ( Number * 100 ; Decimals )  Int( Round ( Number * 100 ; Decimals ) ) = 0 ; Left ( ".0000000000" ; Decimals + 1 ) ;
Left ( Round ( Number * 100 ; Decimals )  Int( Round ( Number * 100 ; Decimals ) ) & "0000000000" ; Decimals+1 ) ) )
& "%"
Jeremiah Hammond, Indianapolis
January 17, 2011 2:09am