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)