I think that we should go ahead and do it. On Wed, Jun 12, 2024, 5:06 PM Zachary Santer <zsan...@gmail.com> wrote:
> On Thu, Jun 6, 2024 at 6:34 AM Léa Gris <lea.g...@noiraude.net> wrote: > > > > Le 06/06/2024 à 11:55, Koichi Murase écrivait : > > > > > Though, I see your point. It is inconvenient that we cannot pass the > > > results of arithmetic evaluations to the `printf' builtin. This > > > appears to be an issue of the printf builtin. I think the `printf' > > > builtin should be extended to interpret both forms of the numbers, the > > > locale-dependent formatted number and the floating-point literals. > > > > Another way would be to expand string representation of floating-point > > numbers using the locale. > > Parameter transformations could be implemented to serve this purpose. > Let's say, if var is in the form of a C floating-point literal, > ${var@F} would expand it to the locale-dependent formatted number, for > use as an argument to printf or for output directly. And then ${var@f} > would go the other way, taking var that's in the form of a > locale-dependent formatted number, and expanding it to a C > floating-point literal. > > In this scenario, any floating point numbers ingested by the bash > script would be transformed to C floating-point literals before they > are referenced or manipulated in an arithmetic context, and then they > would be transformed back into the locale-dependent formatted number > before being output from the script. > > Arithmetic evaluation is performed on the right-hand side of an > assignment statement assigning to a variable declared with the -i > integer attribute. A hypothetical -E floating-point variable attribute > in bash should work the same way. As such, a variable with the -E > attribute would have to be assigned a value in a format accepted by > the arithmetic context, i.e. the C floating-point literal format. > > So you'd have to do > declare -E var="${arg@f}" > in order to safely handle the locale-dependent formatted number arg, > an argument to the script. > > Any floating-point literals within the script would have to be > formatted as C floating-point literals, at least if they're going to > be assigned the -E attribute or used in an arithmetic context. > > And then you would have to do > printf '%f' "${var@F}" > to safely output the value using printf. > > Is that unreasonable? > > Zack > >