Difference between revisions of "LlRound"

From Second Life Wiki
Jump to navigation Jump to search
(Add caveat for values out of range)
(same applies to round as it does for floor for positive values, faster to just +0.5 and truncate to int)
 
(11 intermediate revisions by 6 users not shown)
Line 2: Line 2:
|func=llRound|sort=Round
|func=llRound|sort=Round
|func_id=11|func_sleep=0.0|func_energy=10.0
|func_id=11|func_sleep=0.0|func_energy=10.0
|func_footnote=If the absolute value of the tenths position is 4 or less, {{LSLP|val}} is rounded off; otherwise, {{LSLP|val}} is rounded towards infinity of like signedness of {{LSLP|val}}.
|func_footnote=If the absolute value of the tenths position is 4 or less, {{LSLP|val}} is rounded off; otherwise, {{LSLP|val}} is rounded towards positive infinity.
|p1_type=float|p1_name=val|p1_desc=Any valid float value
|p1_type=float|p1_name=val|p1_desc=Any valid float value
|return_type=integer
|return_type=integer
|Return_text=that {{LSLP|val}} is closest to.
|Return_text=that {{LSLP|val}} is closest to.
|spec
|spec
|caveats=The function returns -2147483648 (0x80000000) if the nearest integer value to the input would be outside of the range of valid integers (-2147483648 to 2147483647)
|caveats=
* The returned value is -2147483648 (0x80000000) if the arithmetic result is outside of the range of valid integers (-2147483648 to 2147483647 inclusive).
|constants
|constants
|examples=<lsl>default
|examples=<syntaxhighlight lang="lsl2">default
{
{
   state_entry()
   state_entry()
   {
   {
       llSay(0,"The rounded value of -4.5 is: "+(string)llRound(-4.5) );
       llSay(0, "The rounded value of -4.9 is: "+(string)llRound(-4.9) );
      //Returns "The rounded value of -4.5 is: -4"
     
      llSay(0,"The rounded value of -4.9 is: "+(string)llRound(-4.9) );
       //Returns "The rounded value of -4.9 is: -5"
       //Returns "The rounded value of -4.9 is: -5"
        
        
       llSay(0,"The rounded value of -4.1 is: "+(string)llRound(-4.1) );
       llSay(0, "The rounded value of -4.1 is: "+(string)llRound(-4.1) );
       //Returns "The rounded value of -4.1 is: -4"
       //Returns "The rounded value of -4.1 is: -4"
        
        
       llSay(0,"The rounded value of 4.5 is: "+(string)llRound(4.5) );
       llSay(0, "The rounded value of 4.5 is: "+(string)llRound(4.5) );
       //Returns "The rounded value of 4.5 is: 5"
       //Returns "The rounded value of 4.5 is: 5"
        
        
       llSay(0,"The rounded value of 4.9 is: "+(string)llRound(4.9) );
       llSay(0, "The rounded value of 4.9 is: "+(string)llRound(4.9) );
       //Returns "The rounded value of 4.9 is: 5"
       //Returns "The rounded value of 4.9 is: 5"
        
        
       llSay(0,"The rounded value of 4.1 is: "+(string)llRound(4.1) );
       llSay(0, "The rounded value of 4.1 is: "+(string)llRound(4.1) );
       //Returns "The rounded value of 4.1 is: 4"
       //Returns "The rounded value of 4.1 is: 4"
      llSay(0,  "The rounded value of -4.5 is: "+(string)llRound(-4.5) );
      //Returns "The rounded value of -4.5 is: -4"
     }
     }
}</lsl>
}</syntaxhighlight>
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llCeil]]|Rounds the float to an integer towards positive infinity}}
|also_functions={{LSL DefineRow||[[llCeil]]|Rounds the float to an integer towards positive infinity}}
Line 38: Line 39:
|also_articles
|also_articles
|also_tests
|also_tests
|notes
|notes=*For positive values, it is quicker to add 0.5 to the value and cast to an integer. i=(integer)(f+0.5) produces less bytecode than i=llRound(f) and is about 5 times faster in execution, while giving the same result.
|permission
|permission
|negative_index
|negative_index

Latest revision as of 11:40, 9 October 2023

Summary

Function: integer llRound( float val );
0.0 Forced Delay
10.0 Energy

Returns the integer that val is closest to.

• float val Any valid float value

If the absolute value of the tenths position is 4 or less, val is rounded off; otherwise, val is rounded towards positive infinity.

Caveats

  • The returned value is -2147483648 (0x80000000) if the arithmetic result is outside of the range of valid integers (-2147483648 to 2147483647 inclusive).

Examples

default
{
   state_entry()
   {  
       llSay(0,  "The rounded value of -4.9 is: "+(string)llRound(-4.9) );
       //Returns "The rounded value of -4.9 is: -5"
       
       llSay(0,  "The rounded value of -4.1 is: "+(string)llRound(-4.1) );
       //Returns "The rounded value of -4.1 is: -4"
       
       llSay(0,  "The rounded value of 4.5 is: "+(string)llRound(4.5) );
       //Returns "The rounded value of 4.5 is: 5"
       
       llSay(0,  "The rounded value of 4.9 is: "+(string)llRound(4.9) );
       //Returns "The rounded value of 4.9 is: 5"
       
       llSay(0,  "The rounded value of 4.1 is: "+(string)llRound(4.1) );
       //Returns "The rounded value of 4.1 is: 4"

       llSay(0,  "The rounded value of -4.5 is: "+(string)llRound(-4.5) );
       //Returns "The rounded value of -4.5 is: -4"
    }
}

Notes

  • For positive values, it is quicker to add 0.5 to the value and cast to an integer. i=(integer)(f+0.5) produces less bytecode than i=llRound(f) and is about 5 times faster in execution, while giving the same result.

See Also

Functions

•  llCeil Rounds the float to an integer towards positive infinity
•  llFloor Rounds the float to an integer towards negative infinity

Deep Notes

Signature

function integer llRound( float val );