Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.soap.decode.float
on float (cdata) { <<04/1/01; 3:34:57 AM by JES <<Created. Decode a float represented as a string. <<Changes: <<04/10/01; 7:20:46 PM by JES <<Fixed decoding of floats with negative exponents, 1e-5, for example. <<04/12/01; 1:13:43 PM by JES <<Properly decode "special" floating point values, INF, -INF and NaN. case cdata { "NaN" { return (soap.constants.floatNaN)}; "INF" { return (soap.constants.floatINF)}; "-INF" { return (soap.constants.floatNegativeINF)}}; try { return (double (cdata))} else { cdata = string.lower (cdata); if string.countFields (cdata, "e") != 2 { scriptError ("Can't decode the floating point value '" + cdata + "' because it's not in the form nnne[+/-]nnn, where n is a numeric character.")}; local (firstPart = double (string.nthField (cdata, "e", 1))); local (secondPart = double (string.nthField (cdata, "e", 2))); if secondPart < 0 { local (denominator = double ("1" + string.filledString ("0", 0 - secondPart))); return (firstPart / denominator)} else { local (multiplier = double ("1" + string.filledString ("0", secondPart))); return (firstPart * multiplier)}}}
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.