Round error value to appropriate significant figures
PeterR
Wed, 12/03/2014 - 04:36 pm
If first significant figure is "1", the value is rounded to the next digit.
If first significant figure is different from "1", the value is rounded to this digit.
Some Examples:
0.00125 --> 0.0013
1.2 --> 1.2
0.35 --> 0.4
0.4 --> 0.4
// Function to determine significant figures
Function Sig_Fig(V_Error)
Variable V_Error
Variable V_Result
print "V_Error: "+num2str(V_Error)
String S_Error
String S_Result
// Calculate power of 10 of Value
Variable V_Error_p10 = (floor(log(abs(V_Error))))
print "V_Value_p10: "+num2str(V_Error_p10)
Variable V_Value
V_Value = V_Error/(10^(V_Error_p10))
print "V_Value_SF: "+num2str(V_Value) // Convert number to the style "x.xx"
// Convert this to a string
S_Error = num2str(V_Value)
print S_Error
// Now check whether first character in string is a 1
String first_char = S_Error [0]
print first_char
if((cmpstr(first_char,"1")==0))
// If "1", round to the next significant number:
S_Result = first_char+S_Error [1]+S_Error [2]+S_Error [3] // "1.23"
V_Result = (round(str2num(S_Result)*10))/10
else
// If other than "1", round to this significant number:
S_Result = first_char+S_Error [1]+S_Error [2] // "2.3"
V_Result = round(str2num(S_Result))
endif
// Reconstruct value by using original power of ten:
V_Result = V_Result*(10^(V_Error_p10))
print V_Result
return V_Result
End
Function Sig_Fig(V_Error)
Variable V_Error
Variable V_Result
print "V_Error: "+num2str(V_Error)
String S_Error
String S_Result
// Calculate power of 10 of Value
Variable V_Error_p10 = (floor(log(abs(V_Error))))
print "V_Value_p10: "+num2str(V_Error_p10)
Variable V_Value
V_Value = V_Error/(10^(V_Error_p10))
print "V_Value_SF: "+num2str(V_Value) // Convert number to the style "x.xx"
// Convert this to a string
S_Error = num2str(V_Value)
print S_Error
// Now check whether first character in string is a 1
String first_char = S_Error [0]
print first_char
if((cmpstr(first_char,"1")==0))
// If "1", round to the next significant number:
S_Result = first_char+S_Error [1]+S_Error [2]+S_Error [3] // "1.23"
V_Result = (round(str2num(S_Result)*10))/10
else
// If other than "1", round to this significant number:
S_Result = first_char+S_Error [1]+S_Error [2] // "2.3"
V_Result = round(str2num(S_Result))
endif
// Reconstruct value by using original power of ten:
V_Result = V_Result*(10^(V_Error_p10))
print V_Result
return V_Result
End
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More