On 4/11/22 11:52, Chet Ramey wrote:
On 4/9/22 3:31 PM, Paul Eggert wrote:
It sounds like there are three cases.
1. If the `L' modifier is supplied, as an extension (POSIX doesn't allow
length modifiers for the printf utility), use long double. This would
work in both default and posix modes.
2. In posix mode, use strtod() and double.
3. In default mode, use the existing code to get the highest possible
precision, as the code has done for over 20 years.
That'll fix the POSIX compatibility bug. However, it may be better for Bash
to just do (1) if 'L' is supplied and (2) otherwise, even if this is less
precise than (3). Doing it this simpler way will likely be more useful for
the small number of people who care whether 'printf' uses 'double' or 'long
double' internally (and nobody else will care).