forked from ArweaveTeam/jiffy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdoubles.cc
33 lines (22 loc) · 811 Bytes
/
doubles.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "double-conversion/double-conversion.h"
#define BEGIN_C extern "C" {
#define END_C }
namespace dc = double_conversion;
BEGIN_C
int
double_to_shortest(unsigned char* buf, size_t size, size_t* len, double val)
{
int flags = dc::DoubleToStringConverter::UNIQUE_ZERO |
dc::DoubleToStringConverter::EMIT_POSITIVE_EXPONENT_SIGN |
dc::DoubleToStringConverter::EMIT_TRAILING_DECIMAL_POINT |
dc::DoubleToStringConverter::EMIT_TRAILING_ZERO_AFTER_POINT;
dc::StringBuilder builder(reinterpret_cast<char*>(buf), size);
dc::DoubleToStringConverter conv(flags, NULL, NULL, 'e', -6, 21, 6, 0);
if(!conv.ToShortest(val, &builder)) {
return 0;
}
*len = (size_t) builder.position();
builder.Finalize();
return 1;
}
END_C