comparison gsm-fw/sprintf/float.c @ 147:4ac657b95f52

gsm-fw: sprintf %f: handle infinities and NaNs
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Thu, 14 Nov 2013 19:16:38 +0000
parents 4d629b6bbcfd
children
comparison
equal deleted inserted replaced
146:4d629b6bbcfd 147:4ac657b95f52
65 int extra_prec = 0; 65 int extra_prec = 0;
66 int origsign = sign; 66 int origsign = sign;
67 double fract, tmp; 67 double fract, tmp;
68 char *start, *t; 68 char *start, *t;
69 69
70 /* first order of business: weed out infinities and NaNs */
71 if (isinf(number)) {
72 if (number < 0)
73 sign = '-';
74 return _sprintf_field(op, width, flags, sign, "Inf", 3, 0, 0);
75 }
76 if (isnan(number))
77 return _sprintf_field(op, width, flags, sign, "NaN", 3, 0, 0);
78 /* OK, we know it's a valid real like in the good old VAX days */
70 if (number < 0) { 79 if (number < 0) {
71 sign = '-'; 80 sign = '-';
72 number = -number; 81 number = -number;
73 } 82 }
74 fract = modf(number, &tmp); 83 fract = modf(number, &tmp);