Difference between revisions of "LlRound"

From Second Life Wiki
Jump to navigation Jump to search
(Undo revision 1187128 by Kireji Haiku (Talk))
(same applies to round as it does for floor for positive values, faster to just +0.5 and truncate to int)
 
(8 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=
|examples=<syntaxhighlight lang="lsl2">default
{{{!}} class="sortable" width="100%" {{Prettytable}}
{{!}}- {{Hl2}}
! '''basic test'''
! '''test with user-defined function'''
{{!}}-
{{!!}}
<lsl>
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"
    }
}
</lsl>
{{!!}}
<lsl>
publish_rounded_value_as_string(float input)
{
    llSay(PUBLIC_CHANNEL, "The rounded value of " + (string)input
                        + "is: " + (string)llRound(input));
}


default
       llSay(0, "The rounded value of -4.5 is: "+(string)llRound(-4.5) );
{
       //Returns "The rounded value of -4.5 is: -4"
  state_entry()
  {
       publish_rounded_value_as_string(-4.5);
      // "The rounded value of -4.5 is: -4"
 
      publish_rounded_value_as_string(-4.9);
      //  "The rounded value of -4.9 is: -5"
 
      publish_rounded_value_as_string(-4.1);
      //  "The rounded value of -4.1 is: -4"
 
      publish_rounded_value_as_string(4.5);
      //  "The rounded value of 4.5 is: 5"
 
      publish_rounded_value_as_string(4.9);
       // "The rounded value of 4.9 is: 5"
 
      publish_rounded_value_as_string(4.1);
      //  "The rounded value of 4.1 is: 4"
     }
     }
}
}</syntaxhighlight>
</lsl>
{{!}}}
|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 80: 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 12:40, 9 October 2023

Summary

Function: integer llRound( float val );

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).
All Issues ~ Search JIRA for related Bugs

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

Search JIRA for related Issues

Signature

function integer llRound( float val );