29 {
30
31#ifdef FASTLED_TESTING
32
33 snprintf(buffer, 64,
"%.*f", precision, value);
34 return;
35
36#else
37
38 if (value < 0) {
39 *buffer++ = '-';
40 value = -value;
41 }
42
43
44 u32 intPart = (u32)value;
45
46
47 char intBuf[12];
48 int i = 0;
49 do {
50 intBuf[i++] = '0' + (intPart % 10);
51 intPart /= 10;
52 } while (intPart);
53
54
55 while (i--) {
56 *buffer++ = intBuf[i];
57 }
58
59 *buffer++ = '.';
60
61
62 float fracPart = value - (u32)value;
63 for (int j = 0; j < precision; ++j) {
64 fracPart *= 10.0f;
65 int digit = (int)fracPart;
66 *buffer++ = '0' + digit;
67 fracPart -= digit;
68 }
69
70 *buffer = '\0';
71#endif
72}
int snprintf(char *buffer, fl::size size, const char *format, const Args &... args)
Snprintf-like formatting function that writes to a buffer.