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