MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / FormatDouble

Function FormatDouble

extensions/formatting.cc:116–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

114}
115
116absl::StatusOr<absl::string_view> FormatDouble(
117 double value, std::optional<int> precision, bool use_scientific_notation,
118 std::string& scratch ABSL_ATTRIBUTE_LIFETIME_BOUND) {
119 static constexpr int kDefaultPrecision = 6;
120 if (std::isnan(value)) {
121 return "NaN";
122 } else if (value == std::numeric_limits<double>::infinity()) {
123 return "Infinity";
124 } else if (value == -std::numeric_limits<double>::infinity()) {
125 return "-Infinity";
126 }
127 auto format = absl::StrCat("%.", precision.value_or(kDefaultPrecision),
128 use_scientific_notation ? "e" : "f");
129 if (use_scientific_notation) {
130 scratch = absl::StrFormat(*absl::ParsedFormat<'e'>::New(format), value);
131 } else {
132 scratch = absl::StrFormat(*absl::ParsedFormat<'f'>::New(format), value);
133 }
134 return scratch;
135}
136
137absl::StatusOr<absl::string_view> FormatList(
138 const Value& value,

Callers 3

FormatDecimalFunction · 0.70
FormatFixedFunction · 0.70
FormatScientificFunction · 0.70

Calls 1

NewFunction · 0.85

Tested by

no test coverage detected