Round error value to appropriate significant figures
PeterR
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