Consider using the dyad ": , e.g.: 0j_5 ": 11^_10+i.4 5 3.85543e_11 4.24098e_10 4.66507e_9 5.13158e_8 5.64474e_7 6.20921e_6 6.83013e_5 7.51315e_4 8.26446e_3 9.09091e_2 1.00000e0 1.10000e1 1.21000e2 1.33100e3 1.46410e4 1.61051e5 1.77156e6 1.94872e7 2.14359e8 2.35795e9
----- Original Message ----- From: Zsbán Ambrus <[email protected]> Date: Wednesday, November 11, 2009 15:14 Subject: [Jprogramming] Format exponentials To: [email protected] > Dear forum, > > Is there a way to make 8!:0 use an exponential format for nonzero > numbers with absolute value below 1e_2 or make it use an exponential > format for all numbers? I find the current default > unusable because > there's no way to make it not lose precision: > > 8!:0 ] 1.234567e_9 > +-----------+ > |0.000000001| > +-----------+ > '6' 8!:0 ] 1.234567e_9 > +--------+ > |0.000000| > +--------+ > > I could of course work this around by writing my own formatter > function, such as > > '-'"_^:('_'&=)"0": 1.234567e_9 > 1.23457e-9 > > Or, more generally, > > $ cat format.c > #include <stdio.h> > static char formatbuf[128]; > char * > formatnumber(int digits, double val) { > if (0 <= digits) > snprintf(formatbuf, sizeof(formatbuf), "%.*e", digits, val); > else > snprintf(formatbuf, sizeof(formatbuf), "%.*g", -digits, val); > return formatbuf; > } > $ gcc -fpic -shared -Wall -O2 -o format.so format.c > $ jconsole > formatnumber =: ([: < [: 15!:1 (0,_1),~ > '/home/ambrus/local/lib/format.so formatnumber > x i d' 15!:0 [;])"0 > 42^i:5 > 7.65162e_9 3.21368e_7 1.34975e_5 0.000566893 0.0238095 1 42 1764 74088 > 3.1117e6 1.30691e8 > ;,&' '&.> _6 formatnumber 42^i:5 > 7.65162e-09 > 3.21368e-07 1.34975e-05 0.000566893 0.0238095 1 > 42 1764 74088 3.1117e+06 1.30691e+08 > (9!:14;9!:12)$0 > +---------------------+-+ > |j602/2008-03-03/16:45|5| > +---------------------+-+ ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
