Computers use binary representation (such as 0 and 1) to represent numbers. Therefore computers have a finite number of bits to represent numbers and cannot represent all the decimal numbers accurately.
This is known as a representation error, and can lead to numbers being rounded incorrectly.
For example, the decimal value 16.15 may actually be represented as 16.149999999999999. When rounded to one decimal place, the number 16.1 is returned because the rounding function distinguishes the second digit after the decimal as 4, not 5.
A method of dealing with representation errors is to add a small number known as a fuzz factor to the number. For example if 0.000000000000005 is added to 16.149999999999999 it will be correctly round 16.15 to 16.2 with one decimal place.
There is no single fuzz factor that can solve all representation errors for all numbers. This is because different numbers have different representation errors. Therefore it is extremely important to select a fuzz factor to meet your particular requirements.
For example the decimal value 19618.75 is actually represented as 19618.749999995001000. Therefore a fuzz factor equal to 0.000000000000005 with one decimal place, rounds the 19618.75 value to 19618.7.
You can continue to increase the fuzz factor until you can guarantee it fixes all the representation errors. However large fuzz factors can lead to the possibility of numbers being incorrectly rounded. For example the actual number 1.4999995 using the fuzz factor 0.0000005. Using one decimal place the number is rounded to 1.5 rather than the correct value 1.4.
Configure SuperCROSS Fuzz Factor
To configure the fuzz factor, you need to edit the super.ini configuration file. If you installed to the default location, this file is located in C:\ProgramData\STR\SuperCROSS
- Open the file in a text editor.
- Search for the
FuzzFactorsetting. If it does not appear in the file, add
FuzzFactorto your preferred value. For example:
- Save your changes to the configuration file.