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. 
JSONArrayLength ( JSONArrayStr ) 

(Fri, May 25, 7:46am) 
2. 
interpolation (y1; y2; y3; x1; x2; x3; x1y1; x2y1; x1y2; x2y2; rnd) 

(Sat, May 19, 3:55am) 
3. 
@JSONFormatElements ( json ) 

(Tue, May 15, 3:31am) 
4. 
WindowNamesAll ( dbNames ; excludeCurrentWindow ) 

(Sat, May 12, 11:34am) 
5. 
RandomChoiceFromList ( values ; required ) 

(Wed, May 02, 6:35am) 
6. 
@JSONFormatElements ( json ) 

(Fri, Apr 27, 7:31am) 
7. 
MBSOCR ( language ; Image ) 

(Mon, Apr 23, 1:48pm) 
8. 
MBS_Image_Rotate ( Picture ; rotation ) 

(Mon, Apr 23, 1:27pm) 


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