提交 4a27d147 编写于 作者: J jsalling

Correct boundary conditions and add tests

上级 1dfcb544
......@@ -281,8 +281,8 @@ void UnityPrintFloat(_UD number)
if (isnan(number)) UnityPrint(UnityStrNaN);
else if (isinf(number)) UnityPrintLen(UnityStrInf, 3);
else if (number < 0.0000005 && number > 0) UnityPrint("0.000000..."); /* Small numbers */
else if (number < 4294967296.0f) /* Rounded result fits in 32 bits, "%.6f" format */
else if (number <= 0.0000005 && number > 0) UnityPrint("0.000000..."); /* Small number */
else if (number < 4294967295.9999995) /* Rounded result fits in 32 bits, "%.6f" format */
{
const _US32 divisor = (1000000/10);
_UU32 integer_part = (_UU32)number;
......@@ -305,7 +305,7 @@ void UnityPrintFloat(_UD number)
double divide = 10.0;
int exponent = 9;
while (number / divide >= 1000000000.0)
while (number / divide >= 1000000000.0 - 0.5)
{
divide *= 10;
exponent++;
......
......@@ -3272,7 +3272,9 @@ void testFloatVerbosePrinting(void)
//Double
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469", 0.10046949999999999);
TEST_ASSERT_EQUAL_PRINT_FLOATING("4294967295.999999", 4294967295.999999);
TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967295.9999995);
TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967296.0);
TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0e+10", 9999999995.0);
TEST_ASSERT_EQUAL_PRINT_FLOATING("7.0e+100", 7.0e+100);
TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.7976931348623157e308*10.0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册