string2Float
Revision as of 22:21, 22 July 2012 by Strife Onizuka (talk | contribs) (... why does this exist? It is faster and eaiser to just use (float)"float value")
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: float String2Float( string str );Returns a float that will be signed if negative.
• string | str | – | string to be typecast to a float |
The number str provided as a string may be negative and may or may not have a decimal point
Returns 0.000000 if the string contains non-numerical characters (other than a negative sign or a decimal point).
Example: <lsl> float My_new_float = String2Float("40.23578"); // returns 40.235780
float My_new_float = String2Float("-683.3"); // returns -683.300000
float My_new_float = String2Float("9924"); // returns 9924.000000 </lsl>
Specification
<lsl>float String2Float(string ST) {
list nums = ["0","1","2","3","4","5","6","7","8","9",".","-"]; float FinalNum = 0.0; integer idx = llSubStringIndex(ST,"."); if (idx == -1) { idx = llStringLength(ST); } integer Sgn = 1; integer j; for (j=0;j< llStringLength(ST);j++) { string Char = llGetSubString(ST,j,j); if (~llListFindList(nums,[Char])) { if((j==0) && (Char == "-")) { Sgn = -1; } else if (j < idx) { FinalNum = FinalNum + (float)Char * llPow(10.0,((idx-j)-1)); } else if (j > idx) { FinalNum = FinalNum + (float)Char * llPow(10.0,((idx-j))); } } } return FinalNum * Sgn;
} </lsl>