Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.soap.encode.float
on float (val) { <<04/11/01; 3:07:28 PM by JES <<Created. Encodes a float as a string, possibly in exponential notation. <<Changes: <<04/11/01; 4:06:57 PM by JES <<Properly encode negative numbers when using exponential notation. <<04/12/01; 1:14:43 PM by JES <<Fixed a bug where "special" floating point values, INF, -INF and NaN, weren't properly encoded. case val { //special IEEE floating point values, INF, -INF and NaN soap.constants.floatINF { return ("INF")}; soap.constants.floatNegativeINF { return ("-INF")}; soap.constants.floatNaN { return ("NaN")}; -0.0; 0.0 { return (string (val))}}; local (isNegative = val < 0); if isNegative { val = 0.0 - val}; case true { val <= 0.00001 { local (exponent); while val < 1 { val = val * 10; exponent--}; if isNegative { return ("-" + val + "e" + exponent)} else { return (val + "e" + exponent)}}; val >= 10000000 { local (exponent); while val >= 10 { val = val / 10; exponent++}; if isNegative { return ("-" + val + "e" + exponent)} else { return (val + "e" + exponent)}}} else { if isNegative { return ("-" + string (val))} else { return (string (val))}}}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.