Difference between revisions of "Format Decimal"
Jump to navigation
Jump to search
Huney Jewell (talk | contribs) (Kill bug in Example Results) |
m (lsl code tagging) |
||
Line 31: | Line 31: | ||
== Specification == | == Specification == | ||
<div style="padding: 0.5em;"> | <div style="padding: 0.5em;"> | ||
< | <lsl> | ||
string FormatDecimal(float number, integer precision) | string FormatDecimal(float number, integer precision) | ||
{ | { | ||
Line 49: | Line 49: | ||
return llGetSubString(strNumber, 0, llSubStringIndex(strNumber, ".") + precision); | return llGetSubString(strNumber, 0, llSubStringIndex(strNumber, ".") + precision); | ||
} | } | ||
</ | </lsl> | ||
'''Examples:''' | '''Examples:''' | ||
{| border="2" cellspacing="0" cellpadding="3" rules="all" style="margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#F9F9F9; font-size:90%; empty-cells:show;" | {| border="2" cellspacing="0" cellpadding="3" rules="all" style="margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#F9F9F9; font-size:90%; empty-cells:show;" | ||
Line 88: | Line 88: | ||
<div style="padding: 0.5em;"> | <div style="padding: 0.5em;"> | ||
Trivial example to listen to any chat from the object owner for '''{{LSL Param|number}}, {{LSL Param|precision}}''' values and respond formatted value. | Trivial example to listen to any chat from the object owner for '''{{LSL Param|number}}, {{LSL Param|precision}}''' values and respond formatted value. | ||
< | <lsl> | ||
// Insert code of FormatDecimal user function here | // Insert code of FormatDecimal user function here | ||
Line 107: | Line 107: | ||
} | } | ||
} | } | ||
</ | </lsl> | ||
</div></div> | </div></div> | ||
{{LSLC|Examples|Format Decimal}} | {{LSLC|Examples|Format Decimal}} |
Revision as of 13:24, 30 March 2008
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Function: string FormatDecimal(float number, integer precision);
Formats a float value to a fixed precision ie. for display purposes
Returns a string that comprises the number truncated and rounded to the given precision.
• float | number | – | any valid float, positive or negative | |
• integer | precision | – | precision of result. Positive values truncate rounded fraction, negative values truncate rounded number to integer |
precision | Value |
---|---|
positive | Truncates number rounded to this fraction positions |
zero | Truncates number rounded to it's integer value |
negative | Rounds number at this pre-decimal position |
Specification
<lsl> string FormatDecimal(float number, integer precision) {
float roundingValue = llPow(10, -precision)*0.5; float rounded; if (number < 0) rounded = number - roundingValue; else rounded = number + roundingValue; if (precision < 1) // Rounding integer value { integer intRounding = (integer)llPow(10, -precision); rounded = (integer)rounded/intRounding*intRounding; precision = -1; // Don't truncate integer value } string strNumber = (string)rounded; return llGetSubString(strNumber, 0, llSubStringIndex(strNumber, ".") + precision);
} </lsl> Examples:
number | precision | Result | Code |
---|---|---|---|
123.456 | 2 | 123.46 | FormatDecimal(123.456, 2)
|
-123.456 | 2 | -123.46 | FormatDecimal(-123.456, 2)
|
123.456 | 0 | 123 | FormatDecimal(123.456, 0)
|
123.456 | -2 | 100 | FormatDecimal(123.456, -2)
|
Caveats
Maximum value is restricted to integer range, that is -2,147,483,648 to +2,147,483,647
Example
Trivial example to listen to any chat from the object owner for number, precision values and respond formatted value. <lsl> // Insert code of FormatDecimal user function here
default {
state_entry() { llOwnerSay("Enter: [number,precision]"); llListen(0, "", llGetOwner(), ""); }
listen(integer _chan, string _str, key _id, string _msg) { list values=llCSV2List(_msg); float number = llList2Float(values,0); integer decimals = llList2Integer(values,1); llOwnerSay("Number " + (string)number + " is formatted " + FormatDecimal(number, decimals)); }
} </lsl>