QB64.org Forum
Active Forums => QB64 Discussion => Topic started by: paravantis on April 10, 2022, 03:55:59 am
-
First post in this forum, pleased to be here.
I have been writing a simple program calculating a complete set of univariate statistics (more than Minitab, SPSS, etc.) In the process, I have come across a puzzling inaccuracy in reporting a rounded number.
I use the following function to round a number xx to dd decimal digits (solely for printing purposes):
round#
= _ROUND(xx
* 10 ^ dd
) / 10 ^ dd
Although the function works well, it has given me a solitary strange result: trying to round the number
to 4 decimal digits, it gives
instead of the expected
When the same function is used to round the number to fewer or more decimal digits, it works fine, without any weird trailing digits.
As an alternative, I tried using
which rounds and prints the number fine.
Help would be appreciated.
-
You've found the solution!
Welcome to the forum!
-
hello paravantis
you may know or have seen discussions about the approximate nature of binary floating-point, unless the fractional part of a decimal number is a power of 2 (or a sum thereof) it will only be approximately represented in the binary form
storing a rounded number to a certain number of decimal places in a variable may not be exact, for displaying numbers I would use print using as in your last example
-
And as TempodiBasic says, remember it's not a bug, it's a feature.
You learn never to completely trust the computer, good lesson!