c - Shorten double value x digit -


i have double value , want shorten 6 digits after integer part. example:

double adouble = 418.73684210526318; double converteddouble = conversion (adouble);  

converteddouble must 418.736842

i implemented solution:

converteddouble = floor(adouble * 1000000) / 1000000; 

however, converteddouble 418.73684200000002, not 418.73684200000000

what can do?

the simplest solution decision tree problem mention in comments think in terms of range of doubles should go particular branch of tree, rather single double.

however, here attempt @ conversion function asked for:

double conversion(double in){     char wkstr[1000];     snprintf(wkstr, sizeof(wkstr), "%.6f", in);     double result;     sscanf(wkstr, "%lf", &result);     return result; } 

as have discovered, finding double closest result of rounding given double limited number of decimal places not trivial problem. can treated combination of 2 non-trivial solved problems:

  1. format input double decimal string rounded required number of decimal places.
  2. parse string closest double rounded decimal value.

Comments