11 snprintf(out, maxlen,
"? %s", base_unit);
15 snprintf(out, maxlen,
"0 %s", base_unit);
19 const char* sign =
"";
24 if (std::isinf(val)) {
25 snprintf(out, maxlen,
"%s∞ %s", sign, base_unit);
28 if (val >= 1000000000000000.0f) {
30 val *= 0.000000000000001;
31 }
else if (val >= 1000000000000.0f) {
33 val *= 0.000000000001;
34 }
else if (val >= 1000000000.0f) {
37 }
else if (val >= 1000000.0f) {
40 }
else if (val >= 1000.0f) {
43 }
else if (val >= 1.0f) {
45 }
else if (val >= 0.001f) {
48 }
else if (val >= 0.000001f) {
51 }
else if (val >= 0.000000001f) {
56 val *= 1000000000000.0f;
58 snprintf(out, maxlen,
"%s%g %s%s", sign, val, prefix, base_unit);
void FormatSimpleSiValue(float val, const char *base_unit, char *out, int maxlen)
Formats a value with an SI prefix and base unit.