# Format Decimal

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
 LSL Portal

## 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

```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);
}
```

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.

```// 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));
}
}
```