SFF++ library: reading and writing SFF from C++

◆ nsignificantdigits()

int sff::helper::nsignificantdigits ( double  v,
const bool &  debug = false 
)

return number of significant digits

Definition at line 49 of file widXio.cc.

Referenced by sff::WIDXline().

50  {
51  const double epsilon=1.e-30;
52  if (debug)
53  {
54  std::cerr << "DEBUG (nsignificantdigits): "
55  << "entered function for value:" << v << std::endl;
56  }
57  if (v<0) { v = -v; }
58  int n=0;
59  if (v<epsilon)
60  {
61  n=2;
62  }
63  else
64  {
65  double basefactor=pow(10.,-floor(log10(v)));
66  double v1,v2;
67  do
68  {
69  double factor=basefactor*pow(10.,n);
70  v1=v*factor;
71  v2=floor(v*factor);
72  n++;
73  if (debug)
74  {
75  std::cerr << "DEBUG (nsignificantdigits): "
76  << "basefactor: " << basefactor << " "
77  << "factor: " << factor << " "
78  << "n: " << n << " "
79  << "v1: " << v1 << " "
80  << "v2: " << v2 << " "
81  << std::endl;
82  }
83  }
84  while (v1 != v2);
85  }
86  return (n);
87  } // int nsignificantdigits(const double& v)
Here is the caller graph for this function: