I ended up writing a double to string conversion function because of problems with "sprint" and "snprint" in Code Composer Studio. I used this
algorithm.
Code:
void doubleToString(double x) {
unsigned char i = 0;
unsigned char n = 2;
double k = 0.0;
double m = 1.0;
unsigned char dinteger;
for (i = 0; i < Exponent + 1; i++) {
valueString[i] = 0;
}
if (x < 0.0) valueString[0] = 0x0C;
else valueString[0] = 0x0B;
x = fabs(x);
xminus = predecessor(x);
xplus = successor(x);
l = (xminus + x)/2.0;
u = (x + xplus)/2.0;
while (u > pow(10.0,k)) {
k += 1.0;
}
valueString[Exponent] = (unsigned char) k;
W = x / pow(10.0,k - 1);
d = floor(W);
W = W - d;
dinteger = (unsigned char) d;
valueString[n] = dinteger;
while (((d * pow(10.0,k - m)) <= l) && (((d + 1.0) * pow(10.0,k - m)) >= u)) {
m += 1.0;
n += 1;
ddigit = floor(10.0 * W);
W = 10.0 * W - ddigit;
d = 10.0 * d + ddigit;
dinteger = (unsigned char) ddigit;
valueString[n] = dinteger;
}
if (((d * pow(10.0,k - m)) > l) && (((d + 1.0) * pow(10.0,k - m)) >= u)) {
} //no change to valueString[n]
else {
if (((d * pow(10.0,k - m)) <= l) && (((d + 1.0) * pow(10.0,k - m)) < u))
valueString[n] = dinteger + 1;
else { //return the value closest to x
if (fabs(d * pow(10.0,k - m) - x) > fabs((d + 1.0) * pow(10.0,k - m) - x))
valueString[n] = dinteger + 1;
}
}
for (i = Exponent - 1; i > 1; i--) {
if (valueString[i] == 0x0A) {
valueString[i] = 0;
valueString[i-1] += 1;
}
}
}