diff --git a/src/storm/models/sparse/Model.cpp b/src/storm/models/sparse/Model.cpp
index 3f7774759..d75065299 100644
--- a/src/storm/models/sparse/Model.cpp
+++ b/src/storm/models/sparse/Model.cpp
@@ -6,6 +6,7 @@
 
 #include "storm/utility/vector.h"
 #include "storm/adapters/CarlAdapter.h"
+#include "storm/utility/NumberTraits.h"
 
 #include "storm/exceptions/IllegalArgumentException.h"
 #include "storm/exceptions/IllegalFunctionCallException.h"
@@ -334,8 +335,7 @@ namespace storm {
             
             template<typename ValueType, typename RewardModelType>
             bool Model<ValueType, RewardModelType>::isExact() const {
-                // TODO: change when dedicated data-structure for exact values is present
-                return this->supportsParameters();
+                return storm::NumberTraits<ValueType>::IsExact && storm::NumberTraits<typename RewardModelType::ValueType>::IsExact;
             }
             
             template<typename ValueType, typename RewardModelType>
diff --git a/src/storm/utility/NumberTraits.h b/src/storm/utility/NumberTraits.h
index bc39948ee..3d3d03387 100644
--- a/src/storm/utility/NumberTraits.h
+++ b/src/storm/utility/NumberTraits.h
@@ -1,13 +1,39 @@
 #pragma once
 
+#include "storm/adapters/CarlAdapter.h"
+
 namespace storm {
     template<typename ValueType>
     struct NumberTraits {
         static const bool SupportsExponential = false;
+        static const bool IsExact = false;
     };
     
     template<>
     struct NumberTraits<double> {
         static const bool SupportsExponential = true;
+        static const bool IsExact = false;
+    };
+    
+#if defined(STORM_HAVE_CLN)
+    template<>
+    struct NumberTraits<storm::ClnRationalNumber> {
+        static const bool SupportsExponential = false;
+        static const bool IsExact = true;
+    };
+#endif
+    
+#if defined(STORM_HAVE_GMP)
+    template<>
+    struct NumberTraits<storm::GmpRationalNumber> {
+        static const bool SupportsExponential = false;
+        static const bool IsExact = true;
+    };
+#endif
+   
+    template<>
+    struct NumberTraits<storm::RationalFunction> {
+        static const bool SupportsExponential = false;
+        static const bool IsExact = true;
     };
 }