Added a JsonValue constructor for float

This commit is contained in:
Benoît Blanchon
2014-07-02 13:46:25 +02:00
parent 922b131f8d
commit e87bde6594
3 changed files with 25 additions and 8 deletions

View File

@ -15,22 +15,24 @@ size_t JsonValue::printBoolTo(Print& p) const
size_t JsonValue::printDoubleTo(Print& p) const
{
char tmp[32];
sprintf(tmp, "%.17lg", content.asDouble);
return p.write(tmp);
}
sprintf(tmp, "%lg", content.asDouble);
size_t JsonValue::printFloatTo(Print& p) const
{
char tmp[16];
sprintf(tmp, "%.9g", content.asFloat);
return p.write(tmp);
}
size_t JsonValue::printLongTo(Print& p) const
{
char tmp[32];
sprintf(tmp, "%ld", content.asLong);
return p.write(tmp);
}
size_t JsonValue::printPrintableTo(Print& p) const
{
if (content.asPrintable)

View File

@ -28,6 +28,12 @@ public:
content.asDouble = value;
}
JsonValue(float value)
: implementation(&JsonValue::printFloatTo)
{
content.asFloat = value;
}
JsonValue(long value)
: implementation(&JsonValue::printLongTo)
{
@ -62,6 +68,7 @@ private:
{
bool asBool;
double asDouble;
float asFloat;
long asLong;
Printable* asPrintable;
const char* asString;
@ -73,6 +80,7 @@ private:
size_t printBoolTo(Print& p) const;
size_t printDoubleTo(Print& p) const;
size_t printFloatTo(Print& p) const;
size_t printLongTo(Print& p) const;
size_t printPrintableTo(Print& p) const;
size_t printStringTo(Print& p) const;

View File

@ -85,11 +85,18 @@ namespace JsonGeneratorTests
assertResultIs("\"\\t\"");
}
TEST_METHOD(Float)
{
write(3.40282346e38F);
// assertReturns(4);
assertResultIs("3.40282347e+038");
}
TEST_METHOD(Double)
{
write(3.14);
assertReturns(4);
assertResultIs("3.14");
write(1.7976931348623157e308);
// assertReturns(4);
assertResultIs("1.7976931348623157e+308");
}
TEST_METHOD(Integer)