提交 dd4cb540 编写于 作者: M Max Bruckner

print_number: Remove unnecessary integer handling

上级 1ea72f82
...@@ -368,44 +368,29 @@ static unsigned char *print_number(const cJSON * const item, printbuffer * const ...@@ -368,44 +368,29 @@ static unsigned char *print_number(const cJSON * const item, printbuffer * const
return NULL; return NULL;
} }
/* value is an int */ /* This is a nice tradeoff. */
if ((fabs(((double)item->valueint) - d) <= DBL_EPSILON) && (d <= INT_MAX) && (d >= INT_MIN)) output_pointer = ensure(output_buffer, 64, hooks);
if (output_pointer != NULL)
{ {
trim_zeroes = false; /* don't remove zeroes for integers */ /* This checks for NaN and Infinity */
if ((d * 0) != 0)
/* 2^64+1 can be represented in 21 chars. */
output_pointer = ensure(output_buffer, 21, hooks);
if (output_pointer != NULL)
{ {
length = sprintf((char*)output_pointer, "%d", item->valueint); length = sprintf((char*)output_pointer, "null");
} }
} else if ((fabs(floor(d) - d) <= DBL_EPSILON) && (fabs(d) < 1.0e60))
/* value is a floating point number */
else
{
/* This is a nice tradeoff. */
output_pointer = ensure(output_buffer, 64, hooks);
if (output_pointer != NULL)
{ {
/* This checks for NaN and Infinity */ /* integer */
if ((d * 0) != 0) length = sprintf((char*)output_pointer, "%.0f", d);
{ trim_zeroes = false; /* don't remove zeroes for "big integers" */
length = sprintf((char*)output_pointer, "null"); }
} else if ((fabs(d) < 1.0e-6) || (fabs(d) > 1.0e9))
else if ((fabs(floor(d) - d) <= DBL_EPSILON) && (fabs(d) < 1.0e60)) {
{ length = sprintf((char*)output_pointer, "%e", d);
length = sprintf((char*)output_pointer, "%.0f", d); trim_zeroes = false; /* don't remove zeroes in engineering notation */
trim_zeroes = false; /* don't remove zeroes for "big integers" */ }
} else
else if ((fabs(d) < 1.0e-6) || (fabs(d) > 1.0e9)) {
{ length = sprintf((char*)output_pointer, "%f", d);
length = sprintf((char*)output_pointer, "%e", d);
trim_zeroes = false; /* don't remove zeroes in engineering notation */
}
else
{
length = sprintf((char*)output_pointer, "%f", d);
}
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册