For gcc>=6 JSON_USE_INT64_DOUBLE_CONVERSION
diff --git a/include/json/config.h b/include/json/config.h
index 1b0581f..51027dd 100644
--- a/include/json/config.h
+++ b/include/json/config.h
@@ -114,6 +114,10 @@
#define JSONCPP_DEPRECATED(message)
#endif // if !defined(JSONCPP_DEPRECATED)
+#if __GNUC__ >= 6
+# define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif
+
namespace Json {
typedef int Int;
typedef unsigned int UInt;
diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
index a1962e6..1f6425f 100644
--- a/src/lib_json/json_value.cpp
+++ b/src/lib_json/json_value.cpp
@@ -784,7 +784,8 @@
#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
return static_cast<float>(value_.uint_);
#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
- return integerToDouble(value_.uint_);
+ // This can fail (silently?) if the value is bigger than MAX_FLOAT.
+ return static_cast<float>(integerToDouble(value_.uint_));
#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
case realValue:
return static_cast<float>(value_.real_);