25 #include <double-conversion.h>
35 inline std::string to_string(
double d,
int digits) {
36 const int bufsz = 1024;
39 double_conversion::DoubleToStringConverter dtosc(double_conversion::
40 DoubleToStringConverter::
41 EMIT_POSITIVE_EXPONENT_SIGN,
42 "Inf",
"NaN",
'e', -6, 6, 6, 6);
43 double_conversion::StringBuilder sb(buf, bufsz);
44 dtosc.ToShortest(d, &sb);
45 auto res = sb.position();
48 double_conversion::StringBuilder sb2(buf, bufsz);
49 dtosc.ToFixed(d, digits, &sb2);
57 inline std::string fixed_scientific(
double d,
int digits) {
58 const int bufsz = 1024;
61 double_conversion::DoubleToStringConverter dtosc(double_conversion::
62 DoubleToStringConverter::
63 EMIT_POSITIVE_EXPONENT_SIGN,
64 "Inf",
"NaN",
'e', 0, 0, 0, 0);
65 double_conversion::StringBuilder sb(buf, bufsz);
66 dtosc.ToExponential(d, digits-1, &sb);
72 inline std::string fixed_decimal(
double d,
int digits) {
73 const int bufsz = 1024;
76 double_conversion::DoubleToStringConverter dtosc(double_conversion::
77 DoubleToStringConverter::
78 EMIT_POSITIVE_EXPONENT_SIGN,
79 "Inf",
"NaN",
'e', 0, 0, 0, 0);
80 double_conversion::StringBuilder sb(buf, bufsz);
81 dtosc.ToFixed(d, digits-1, &sb);
88 inline std::string shortest_scientific(
double d) {
89 const int bufsz = 1024;
92 double_conversion::DoubleToStringConverter dtosc(double_conversion::
93 DoubleToStringConverter::
94 EMIT_POSITIVE_EXPONENT_SIGN,
95 "Inf",
"NaN",
'e', 0, 0, 0, 0);
96 double_conversion::StringBuilder sb(buf, bufsz);
97 dtosc.ToShortest(d, &sb);
103 inline std::string shortest_decimal(
double d) {
104 const int bufsz = 1024;
107 double_conversion::DoubleToStringConverter dtosc(double_conversion::
108 DoubleToStringConverter::
109 EMIT_POSITIVE_EXPONENT_SIGN,
110 "Inf",
"NaN",
'e', -99, 99, 0, 0);
111 double_conversion::StringBuilder sb(buf, bufsz);
112 dtosc.ToShortest(d, &sb);