| hermann on Thu, 18 Jan 2024 23:48:12 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: print() does output numbers in scientific notation violating JSON number spec |
On 2024-01-18 23:09, hermann@stamm-wilbrandt.de wrote:
Is there an option to make PARI/GP produce "0.00001" as output instead of scientific representation?
I found workaround:
? print(0.00001)
1.0000000000000000000000000000000000000 E-5
? print(strprintf("%f",0.00001))
0.000010000000000000000000000000000000000000
?
I cannot use printf() since the float is arg of wlog() function:
jscad.wlog=(args[..])->{
my(nargs=#args);
if(nargs>0,filewrite1(writer,args[1]);
foreach(args[2..nargs],arg,
filewrite1(writer," ");filewrite1(writer,arg)
)
);
filewrite(writer,"");
};
So I now use
wlog("eps =", strprintf("%f",eps));
and get output that can be read from JavaScript/nodejs.
I would say this is at least an interoperability bug.It should be fixed, if there is not a really good reason to output that space.
The issue is discussed in "3.4.12 format" of 2.15.4 GP user guide."In style g, nonzero real numbers are printed in f format, except when their decimal exponent
is < −4, in which case they are printed in e format.""If the conversion style is e, real numbers are printed in scientific format, always with an explicit exponent, e.g. 3.3 E-5." shows the incorrect space in doc as well.
For interoperability, f format output should be fixed to not show space between frac and exp parts.
Regards, Hermann.