MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / formatReadable

Function formatReadable

src/Common/formatReadable.cpp:16–38  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14}
15
16static void formatReadable(double size, DB::WriteBuffer & out,
17 int precision, const char ** units, size_t units_size, double delimiter)
18{
19 size_t i = 0;
20 for (; i + 1 < units_size && fabs(size) >= delimiter; ++i)
21 size /= delimiter;
22
23 DB::DoubleConverter<false>::BufferType buffer;
24 double_conversion::StringBuilder builder{buffer, sizeof(buffer)};
25
26 const auto & converter = DB::DoubleConverter<false>::instance();
27
28 auto result = converter.ToFixed(size, precision, &builder);
29
30 if (!result)
31 result = converter.ToShortest(size, &builder);
32
33 if (!result)
34 throw DB::Exception(DB::ErrorCodes::CANNOT_PRINT_FLOAT_OR_DOUBLE_NUMBER, "Cannot print float or double number");
35
36 out.write(buffer, builder.position());
37 writeCString(units[i], out);
38}
39
40
41void formatReadableSizeWithBinarySuffix(double value, DB::WriteBuffer & out, int precision)

Callers 4

formatReadableQuantityFunction · 0.85
formatReadableTimeFunction · 0.85

Calls 3

ExceptionClass · 0.70
writeMethod · 0.45
positionMethod · 0.45

Tested by

no test coverage detected