Github user jeking3 commented on a diff in the pull request:

    https://github.com/apache/thrift/pull/1496#discussion_r175276410
  
    --- Diff: compiler/cpp/src/thrift/generate/t_generator.h ---
    @@ -268,6 +271,30 @@ class t_generator {
         return out.str();
       }
     
    +  const std::string emit_double_as_string(const double value) {
    +      std::stringstream double_output_stream;
    +      // sets the maximum precision: 
http://en.cppreference.com/w/cpp/io/manip/setprecision
    +      // sets the output format to fixed: 
http://en.cppreference.com/w/cpp/io/manip/fixed (not in scientific notation)
    +      double_output_stream << 
std::setprecision(std::numeric_limits<double>::digits10 + 1);
    +
    +      #ifdef _MSC_VER
    +          // strtod is broken in MSVC compilers older than 2015, so 
std::fixed fails to format a double literal.
    +          // more details: 
https://blogs.msdn.microsoft.com/vcblog/2014/06/18/
    +          //               
c-runtime-crt-features-fixes-and-breaking-changes-in-visual-studio-14-ctp1/
    +          //               and
    +          //               
http://www.exploringbinary.com/visual-c-plus-plus-strtod-still-broken/
    +          #if _MSC_VER >= MSC_2015_VER
    +              double_output_stream << std::fixed;
    +          #endif
    +      #else
    +          double_output_stream << std::fixed;
    --- End diff --
    
    Did you mean both cases to be the same?  Both use std::fixed; should one be 
using std::scientific?


---

Reply via email to