SigFigs[numString_String] := Module[ {chkString, numNum, fractionLength, firstPosition, sigFigs}, (* Created by NJG, Sat Mar 22 2008 *) (* Updated by NJG, Sun 28 Aug 2011 *) chkString = numString; (* must make copy to alter input string *) chkString = StringReplace[chkString, ","->""]; (* toss commas *) numNum = ToExpression[chkString]; If[! NumberQ[numNum], Return["Error: "<>chkString<>" is not a number."]]; If[numNum < 1, (* DECIMAL fraction *) splitNum = StringSplit[numString, "."]; fractionLength = StringLength[splitNum[[2]]]; firstPosition = Ceiling[Abs[Log[10, numNum]]]; sigFigs = (fractionLength + 1) - firstPosition; ]; If[numNum >= 1, If[StringMatchQ[numString, "*.*"], (* DECIMAL number *) chkString=StringReplace[chkString, "."->""]; (* toss decimal pt *) sigFigs = StringLength[chkString], (* Else INTEGER number *) noTrailZeros = NumberForm[ToExpression[StringJoin[".", chkString]], StringLength[chkString]]; splitNum = StringSplit[ToString[noTrailZeros], "."]; sigFigs = StringLength[splitNum[[2]]] ] ]; Return[sigFigs] ]