ROUND: Difference between revisions
Jump to navigation
Jump to search
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
No edit summary |
No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:_ROUND}} | {{DISPLAYTITLE:_ROUND}} | ||
The [[ | The '''_ROUND''' function rounds [[SINGLE]], [[DOUBLE]] and [[_FLOAT]] decimal point numbers to the nearest [[INTEGER]], [[LONG]] or [[_INTEGER64]] value with one exception. If the fraction of the decimal point number is exactly .5, then it is '''always''' rounded to the nearest '''even''' integer value. | ||
{{PageSyntax}} | {{PageSyntax}} | ||
: {{Parameter|value}} = [[_ROUND]]({{Parameter| | : {{Parameter|value}} = [[_ROUND]]({{Parameter|expression}}) | ||
{{PageParameters}} | |||
* {{Parameter|expression}} is any [[Variable Types|type]] of literal or variable numerical value or mathematical calculation. | |||
{{PageDescription}} | {{PageDescription}} | ||
* | ;* Note: As given values may be positive or negative and the rounding directions are opposite in each case, we don't speak of rounding up or down. That's elementary school terminology when kids don't know of negative numbers yet. | ||
* | :* Instead we speak of rounding towards zero or rounding towards infinity, which exactly describes the rounding direction for both, positive and negative numbers. | ||
* Fractions greater than .5 are rounded to the next integer number towards infinity | |||
* Fractions lower than .5 are rounded to the next integer number towards zero. | |||
* Fractions exactly .5 are rounded to the nearest '''even''' integer number. | |||
* This function practically superseds [[CINT]] and [[CLNG]], as it can handle all floating point types and returns appropriate integer types, while the mentioned legacy commands imposed limits on their inputs and results. | |||
* This function is automatically applied (in the background) to decimal point values, which are given to [[SUB]]s or [[FUNCTION]]s requiring [[_INTEGER64]]s as arguments. | |||
{{PageAvailability}} | |||
<!-- QB64 = a version or none, QBPE = a version or all, Platforms = yes or no --> | |||
<gallery widths="48px" heights="48px" mode="nolines"> | |||
File:Qb64.png|'''all''' | |||
File:Qbpe.png|'''all''' | |||
File:Apix.png | |||
File:Win.png|'''yes''' | |||
File:Lnx.png|'''yes''' | |||
File:Osx.png|'''yes''' | |||
</gallery> | |||
<!-- additional availability notes go below here --> | |||
{{PageExamples}} | |||
;Example: Shows how _ROUND rounds values depending on the current fraction. | |||
{{CodeStart}} | {{CodeStart}} | ||
{{Cl| | {{Cl|WIDTH}} {{Text|50|#F580B1}}, {{Text|35|#F580B1}} | ||
{{Cl| | {{Cl|FOR}} f = {{Text|-3.5|#F580B1}} {{Cl|TO}} {{Text|3.5|#F580B1}} | ||
{{Cl|PRINT}} {{Cl|_ROUND}}( | {{Cl|IF}} f < {{Text|0|#F580B1}} {{Cl|THEN}} | ||
{{Cl|PRINT}} {{Cl|_ROUND}}( | down$ = {{Text|<nowiki>"towards infinity"</nowiki>|#FFB100}} | ||
{{Cl|PRINT}} {{Cl|_ROUND}}( | up$ = {{Text|<nowiki>"towards zero"</nowiki>|#FFB100}} | ||
{{Cl|PRINT}} {{Cl| | {{Cl|ELSE}} | ||
down$ = {{Text|<nowiki>"towards zero"</nowiki>|#FFB100}} | |||
up$ = {{Text|<nowiki>"towards infinity"</nowiki>|#FFB100}} | |||
{{Cl|END IF}} | |||
{{Cl|PRINT}} f - {{Text|0.01|#F580B1}}, {{Cl|_ROUND}}(f - {{Text|0.01|#F580B1}}), down$ | |||
{{Cl|PRINT}} f, {{Cl|_ROUND}}(f), {{Text|<nowiki>"to nearest even"</nowiki>|#FFB100}} | |||
{{Cl|PRINT}} f + {{Text|0.01|#F580B1}}, {{Cl|_ROUND}}(f + {{Text|0.01|#F580B1}}), up$ | |||
{{Cl|PRINT}} | |||
{{Cl|NEXT}} f | |||
{{CodeEnd}} | {{CodeEnd}} | ||
{{PageSeeAlso}} | {{PageSeeAlso}} | ||
* [[ | * [https://qb64phoenix.com/forum/showthread.php?tid=3661 Featured in our "Keyword of the Day" series] | ||
* [[ | * [[CINT]], [[_CEIL]] | ||
* [[CLNG]], [[CSNG]], [[CDBL]] | |||
* [[INT]], [[FIX]] | |||
{{PageNavigation}} | {{PageNavigation}} |
Latest revision as of 23:18, 7 May 2025
The _ROUND function rounds SINGLE, DOUBLE and _FLOAT decimal point numbers to the nearest INTEGER, LONG or _INTEGER64 value with one exception. If the fraction of the decimal point number is exactly .5, then it is always rounded to the nearest even integer value.
Syntax
- value = _ROUND(expression)
Parameters
- expression is any type of literal or variable numerical value or mathematical calculation.
Description
- Note
- As given values may be positive or negative and the rounding directions are opposite in each case, we don't speak of rounding up or down. That's elementary school terminology when kids don't know of negative numbers yet.
- Instead we speak of rounding towards zero or rounding towards infinity, which exactly describes the rounding direction for both, positive and negative numbers.
- Fractions greater than .5 are rounded to the next integer number towards infinity
- Fractions lower than .5 are rounded to the next integer number towards zero.
- Fractions exactly .5 are rounded to the nearest even integer number.
- This function practically superseds CINT and CLNG, as it can handle all floating point types and returns appropriate integer types, while the mentioned legacy commands imposed limits on their inputs and results.
- This function is automatically applied (in the background) to decimal point values, which are given to SUBs or FUNCTIONs requiring _INTEGER64s as arguments.
Availability
Examples
- Example
- Shows how _ROUND rounds values depending on the current fraction.
WIDTH 50, 35 FOR f = -3.5 TO 3.5 IF f < 0 THEN down$ = "towards infinity" up$ = "towards zero" ELSE down$ = "towards zero" up$ = "towards infinity" END IF PRINT f - 0.01, _ROUND(f - 0.01), down$ PRINT f, _ROUND(f), "to nearest even" PRINT f + 0.01, _ROUND(f + 0.01), up$ PRINT NEXT f |
See also