rounding_20functions

*by Richard Russell, June 2016*

If you want to **round** a numeric value to a specific number of decimal places or significant figures there are a number of ways in which this can be achieved. The most flexible way is to use the @% system variable because, when used in conjunction with **PRINT** or the **STR$()** function, it provides the greatest degree of control over the format of the resulting number. However at the same time it is probably the least user-friendly method.

Another approach is to use the FNusing library function. This provides a functionality very similar to the **PRINT USING** statement in some other BASICs, but with the advantage that it can be used not only when PRINTing the number but also when writing it to a string variable or to a file etc.

Yet another method is to take advantage of one or other of the user-defined functions listed below. The first formats a number to the specified number of **decimal places** and the second formats it to the specified number of **significant figures**:

DEF FNround_dp(n, dp%) LOCAL @% @% = &1420000 + dp% * 256 = STR$(n) DEF FNround_sf(n, sf%) LOCAL @% @% = &1000000 + sf% * 256 = STR$(n)

It is perhaps worth emphasising that the concept of rounding to a certain number of digits applies only to decimal numbers, which is why the above functions return strings. BBC BASIC holds numeric values internally in binary, so you cannot meaningfully refer to them as being rounded to a certain number of decimal digits.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

rounding_20functions.txt · Last modified: 2018/04/17 19:34 by tbest3112

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International