diff --git a/src/unity.c b/src/unity.c
index c755ebb..91ff0b9 100644
--- a/src/unity.c
+++ b/src/unity.c
@@ -686,6 +686,7 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected,
 }
 
 /*-----------------------------------------------*/
+#ifndef UNITY_EXCLUDE_FLOAT
 /* Wrap this define in a function with variable types as float or double */
 #define UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff)                       \
     if (isinf(expected) && isinf(actual) && (isneg(expected) == isneg(actual))) return 1; \
@@ -714,7 +715,6 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected,
     UnityPrint(UnityStrDelta)
 #endif /* UNITY_EXCLUDE_FLOAT_PRINT */
 
-#ifndef UNITY_EXCLUDE_FLOAT
 static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual)
 {
     UNITY_FLOAT diff;
diff --git a/src/unity_internals.h b/src/unity_internals.h
index 00d1a16..e432e25 100644
--- a/src/unity_internals.h
+++ b/src/unity_internals.h
@@ -168,16 +168,15 @@
 #ifdef UNITY_EXCLUDE_FLOAT
 
 /* No Floating Point Support */
-#undef UNITY_INCLUDE_FLOAT
-#undef UNITY_FLOAT_PRECISION
-#undef UNITY_FLOAT_TYPE
+#ifndef UNITY_EXCLUDE_DOUBLE
+#define UNITY_EXCLUDE_DOUBLE /* Remove double when excluding float support */
+#endif
+#ifndef UNITY_EXCLUDE_FLOAT_PRINT
+#define UNITY_EXCLUDE_FLOAT_PRINT
+#endif
 
 #else
 
-#ifndef UNITY_INCLUDE_FLOAT
-#define UNITY_INCLUDE_FLOAT
-#endif
-
 /* Floating Point Support */
 #ifndef UNITY_FLOAT_PRECISION
 #define UNITY_FLOAT_PRECISION (0.00001f)
@@ -212,30 +211,20 @@ typedef UNITY_FLOAT_TYPE UNITY_FLOAT;
  * Double Float Support
  *-------------------------------------------------------*/
 
-/* unlike FLOAT, we DON'T include by default */
-#ifndef UNITY_EXCLUDE_DOUBLE
-  #ifndef UNITY_INCLUDE_DOUBLE
-  #define UNITY_EXCLUDE_DOUBLE
-  #endif
-#endif
-
-#ifdef UNITY_EXCLUDE_DOUBLE
+/* unlike float, we DON'T include by default */
+#if defined(UNITY_EXCLUDE_DOUBLE) || !defined(UNITY_INCLUDE_DOUBLE)
 
   /* No Floating Point Support */
-  #undef UNITY_DOUBLE_PRECISION
-  #undef UNITY_DOUBLE_TYPE
-
-  #ifdef UNITY_INCLUDE_DOUBLE
+  #ifndef UNITY_EXCLUDE_DOUBLE
+  #define UNITY_EXCLUDE_DOUBLE
+  #else
     #undef UNITY_INCLUDE_DOUBLE
   #endif
 
-  #ifdef UNITY_EXCLUDE_FLOAT
-  #undef UNITY_EXCLUDE_FLOAT_PRINT
-  #define UNITY_EXCLUDE_FLOAT_PRINT
-  #else
-  #ifndef UNITY_DOUBLE_TYPE
-  #define UNITY_DOUBLE_TYPE double
-  #endif
+  #ifndef UNITY_EXCLUDE_FLOAT
+    #ifndef UNITY_DOUBLE_TYPE
+    #define UNITY_DOUBLE_TYPE double
+    #endif
   typedef UNITY_FLOAT UNITY_DOUBLE;
   /* For parameter in UnityPrintFloat(UNITY_DOUBLE), which aliases to double or float */
   #endif