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. 
NumberToHexadecimal(NumberValue) 

(Fri, Dec 08, 8:54am) 
2. 
Get_BaseTable 

(Thu, Dec 07, 4:27pm) 
3. 
JSONCreateVarsFromKeys ( json ; namespace ) 

(Wed, Dec 06, 8:21pm) 
4. 
GetTableNzme ( field ) 

(Tue, Dec 05, 9:16pm) 
5. 
TimeFormatAsText ( theTime ) 

(Mon, Nov 13, 1:59pm) 
6. 
ParseWebValueList( text ) 

(Thu, Nov 02, 9:52am) 
7. 
SVG_HTML_to_Text ( _svg_text ; _orig_text ; 

(Wed, Oct 25, 4:17am) 
8. 
decFromHex ( hexValue ) 

(Mon, Oct 16, 12:34pm) 


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