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. 
Char0 ( ) 

(Sun, Feb 18, 2:35am) 
2. 
CreateVCardFile ( FirstName ; LastName ; CompanyName ; Phone ; Email ; WEB ; hAddress1 ; hAddress2 ; hZip ; hCity ; hCountry ; wAddress1 ; wAddress2 ; wZip ; wCity%2 

(Sun, Feb 18, 1:50am) 
3. 
AccurateAge (start; end ) 

(Tue, Feb 13, 5:41am) 
4. 
fnParser_UnCertain(text;firstSymbol;secondSymbol;SN) 

(Mon, Feb 12, 11:10pm) 
5. 
sql.whereInList.asList ( fqFieldToReturn ; fqFieldToMatch ; listOfValuesToMatch ) 

(Wed, Feb 07, 2:03pm) 
6. 
CF_DateInterval (FI; FF) 

(Mon, Feb 05, 5:24pm) 
7. 
@GetAsHTMLDecoded ( text ) 

(Fri, Feb 02, 5:39am) 
8. 
FMPathToSystemPath ( FPath ) 

(Wed, Jan 24, 5:55pm) 


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