diff --git a/modules/juce_core/system/juce_StandardHeader.h b/modules/juce_core/system/juce_StandardHeader.h index 6a884a951c..db8b2cab49 100644 --- a/modules/juce_core/system/juce_StandardHeader.h +++ b/modules/juce_core/system/juce_StandardHeader.h @@ -50,6 +50,7 @@ #include #include #include +#include //============================================================================== #include "juce_CompilerSupport.h" diff --git a/modules/juce_core/text/juce_CharacterFunctions.h b/modules/juce_core/text/juce_CharacterFunctions.h index 77f4dcd748..571a36c685 100644 --- a/modules/juce_core/text/juce_CharacterFunctions.h +++ b/modules/juce_core/text/juce_CharacterFunctions.h @@ -213,9 +213,22 @@ public: if (exponentMagnitude > std::numeric_limits::max_exponent10) return std::numeric_limits::quiet_NaN(); + + if (exponentMagnitude == 0) + *currentCharacter++ = '0'; + } + + double result = 0; + const size_t stringSize = (size_t) (currentCharacter - &buffer[0]) + 1; + + if (stringSize > 1) + { + std::istringstream is (std::string (&buffer[0], stringSize)); + is.imbue (std::locale ("C")); + is >> result; } - return strtod (&buffer[0], nullptr); + return result; } /** Parses a character string, to read a floating-point value. */