Cool after lunch programming problem....here's what I came up with,
seems to work.  Relies on the typeless nature of CF:

<cffunction name="exponentialFormat" returnType="string">
  <cfargument name="foo" type="numeric" required="true">
  <cfif foo eq 0>
    <cfset foo = "0E0">
  <cfelseif foo gte 1>
    <cfset foo = foo / (1 & repeatString("0", len(round(foo)) - 1)) &
"E" & (len(round(foo)) - 1)>
  <cfelseif foo lt 1 and foo gt 0>
    <cfset foo = foo * (1 & repeatString("0", len(round(1/foo)))) &
"E-" & len(round(1/foo))>
  <cfelseif foo lt 0 and foo gt -1>
    <cfset foo = foo * -1>
    <cfset foo = foo * (1 & repeatString("0", len(round(1/foo)))) &
"E-" & len(round(1/foo))>
    <cfset foo = "-" & foo>
  <cfelseif foo lte -1>
    <cfset foo = foo * -1>
    <cfset foo = foo / (1 & repeatString("0", len(round(foo)) - 1)) &
"E" & (len(round(foo)) - 1)>
    <cfset foo = "-" & foo>
  </cfif>
  <cfreturn foo>
</cffunction>

<cfoutput>
0 = #exponentialFormat(0)#<br>
-0.99999 = #exponentialFormat(-0.99999)#<br>
-123.333 = #exponentialFormat(-123.333)#<br>
0.1432 = #exponentialFormat(0.1432)#<br>
1.4 = #exponentialFormat(1.4)#<br>
324324 = #exponentialFormat(324324)#<br>
</cfoutput>

-joe
[Todays Threads] [This Message] [Subscription] [Fast Unsubscribe] [User Settings] [Donations and Support]

Reply via email to