I think this method works but results may not be exactly the same as that given by ":
Втр, 29 Мар 2011, Marshall Lochbaum писал(а): > I wouldn't recommend messing around with ": . > > exponent=: 10&(<.@^.) > mantissa=: % 10^exponent > > Give you the numerical values of the exponent and mantissa. Then if you need > a string, use ": , with an appropriate left argument if you want to control > the number of digits. > > Marshall > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of PackRat > Sent: Tuesday, March 29, 2011 6:51 PM > To: Programming forum > Subject: [Jprogramming] Extracting from scientific notation > > This has got to be easy, but I couldn't find anything easily discernable > from the Vocabulary page or from the Phrases pages: > > I'm having problems extracting the mantissa and the exponent from a number > in scientific notation. I'm trying to compare numbers of differing > magnitudes to see how similar the digits of the numbers are regardless of > the magnitude. To do so, I'm converting them to scientific notation to > separate the magnitude from the base value, using this little converter to > scientific notation: > > sn=. 0j_3 ": ] > > QUESTION 1: The converter requires a specification of the number of digits > to retain in the result (in this case, 3). Instead of a specified fixed > value, how does one specify to the interpreter to use whatever number of > digits there are in the argument? (In other words, the converter should > depend upon the input, not upon the programmer.) > > > The following verb phrase extracts the mantissa from a scientific notation > equivalent of the argument (using the above converter): > > ((sn y) i. 'e') {. (sn y) > > If y = 440.5 , then the above converts it to '4.405e2' and correctly > extracts the digits ahead of the 'e': '4.405' . > > QUESTION 2: However, if the two verb phrases above are incorporated into an > explicit verb in a script: > > mantissa=. 3 : 0 > sn=. 0j_3 ": ] NB. convert to scientific notation as a literal > ((sn y) i. 'e') {. (sn y) > ) > > then it fails with the following error after loading the script containing > the above verb and then executing the verb with a value: > > mantissa 440.5 > |syntax error > | mantissa 440.5 > > Obviously, I must be doing something wrong, but I can't see what the the > error is in the explicit verb definition, since both lines within the verb > work perfectly well when entered directly into the interpreter. > > > I have a companion explicit verb to extract the exponent: > > exponent=. 3 : 0 > sn=. 0j_3 ": ] NB. convert to scientific notation as a literal > (1+(#(mantissa y))) }. (sn y) > ) > > but it depends upon the "mantissa" verb earlier, which is currently giving > the above error message. > > > Can anyone help the blind see? Thanks in advance! > > Harvey > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm -- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
