mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-07-15 00:52:46 +08:00
Correct boundary conditions and add tests
This commit is contained in:
@ -281,8 +281,8 @@ void UnityPrintFloat(_UD number)
|
|||||||
|
|
||||||
if (isnan(number)) UnityPrint(UnityStrNaN);
|
if (isnan(number)) UnityPrint(UnityStrNaN);
|
||||||
else if (isinf(number)) UnityPrintLen(UnityStrInf, 3);
|
else if (isinf(number)) UnityPrintLen(UnityStrInf, 3);
|
||||||
else if (number < 0.0000005 && number > 0) UnityPrint("0.000000..."); /* Small numbers */
|
else if (number <= 0.0000005 && number > 0) UnityPrint("0.000000..."); /* Small number */
|
||||||
else if (number < 4294967296.0f) /* Rounded result fits in 32 bits, "%.6f" format */
|
else if (number < 4294967295.9999995) /* Rounded result fits in 32 bits, "%.6f" format */
|
||||||
{
|
{
|
||||||
const _US32 divisor = (1000000/10);
|
const _US32 divisor = (1000000/10);
|
||||||
_UU32 integer_part = (_UU32)number;
|
_UU32 integer_part = (_UU32)number;
|
||||||
@ -305,7 +305,7 @@ void UnityPrintFloat(_UD number)
|
|||||||
double divide = 10.0;
|
double divide = 10.0;
|
||||||
int exponent = 9;
|
int exponent = 9;
|
||||||
|
|
||||||
while (number / divide >= 1000000000.0)
|
while (number / divide >= 1000000000.0 - 0.5)
|
||||||
{
|
{
|
||||||
divide *= 10;
|
divide *= 10;
|
||||||
exponent++;
|
exponent++;
|
||||||
|
@ -3272,7 +3272,9 @@ void testFloatVerbosePrinting(void)
|
|||||||
//Double
|
//Double
|
||||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469", 0.10046949999999999);
|
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469", 0.10046949999999999);
|
||||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("4294967295.999999", 4294967295.999999);
|
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("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("7.0e+100", 7.0e+100);
|
||||||
|
|
||||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.7976931348623157e308*10.0);
|
TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.7976931348623157e308*10.0);
|
||||||
|
Reference in New Issue
Block a user