Richard H. Gumpertz created THRIFT-5496:
-------------------------------------------

             Summary: Thrift compiler (C/C++) truncates small doubles to a 
fixed number of digits after the decimal point 
                 Key: THRIFT-5496
                 URL: https://issues.apache.org/jira/browse/THRIFT-5496
             Project: Thrift
          Issue Type: Bug
          Components: C++ - Compiler
    Affects Versions: 0.15.0
            Reporter: Richard H. Gumpertz


When the Thrift C++ compiler generates double constants in .h files, it
    (1) doesn't use scientific notation (e.g., 123.45e-22)
    (2) uses a fixed number of digits after the decimal point

Hence, if the constant to be generated is small but non-zero, it shows up as 
"0.0000000000000000" (17 digits of precision, 16 after the decimal point).

(1) Would somebody please explain why scientific notation is not used when 
appropriate?

(2) Assuming that there is a good reason for not using scientific notation, I 
have created a fix that instead generates 
"0.000000000000000000012345000000000000" (17 digits of precision following the 
19 '0's between the decimal point and the '1'. 

I made this fix in .../generate/t_erl_generator.cc,, 
.../generate/t_generator.cc,, and .../test/DoubleConstantsTest.thrift. 

I will submit a github pull request shortly.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to