Rounding values to a defined number of significant digits
Function SuperRound(number,digits) // round values to selectable number of digits Variable number, digits String StrNumber Variable Multiplier, i // multiplier decides how much the decimal spot is "shifted" for rounding if (number < 1) // separate numbers whether they are < or > 1 sprintf StrNumber, "%.10f", number // express the number as text to work with it for (i = 2; i < Strlen(StrNumber); i += 1) if(StringMatch(StrNumber[i],"0") == 0) // find the first non-zero number Multiplier = 10^(2 - i - digits) break endif endfor else sprintf StrNumber, "%d", number // express the number as text to count the digits Multiplier = 10^(strlen(StrNumber) - digits) endif if (Multiplier < 1) // countermeasure for rounding errors when dividing by small numbers Multiplier = 1/Multiplier number = round(number*Multiplier)/Multiplier else number = round(number/Multiplier)*Multiplier endif return number End
Forum
Support
Gallery
Igor Pro 10
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More
print DoStuff(0.003474, 2) 0.0035January 13, 2016 at 02:52 am - Permalink
January 13, 2016 at 10:55 pm - Permalink