I realise that '1234.00' is not being parsed correctly. Will need to account for all zero after the decimal point. It is also wrong for numbers without a point.
On Wed, 6 Jan 2021 at 12:29, Raul Miller <[email protected]> wrote: > > I would not combine those ideas. > > Either should work alone, just fine (though you need to be careful > that you've always got .00 for the ones that need it, if you are > removing the decimal point). > > FYI, > > -- > Raul > > On Wed, Jan 6, 2021 at 2:20 AM Justin Paston-Cooper > <[email protected]> wrote: > > > > Thanks for the suggestion. I've combined Don's idea of using x: and > > your idea of removing the point and parsing that to handle all numbers > > of digits after the decimal point: > > > > stringToRational =: ((_&".)@(-.&'.') %&:x: 10&^@(<:@# - (i.&'.')) > > > > stringToRational '666.66' should give 333r50. > > > > Sadly this is giving a domain error, even though both sides of the > > fork work alone. Could anyone suggest how to fix this? > > > > On Tue, 5 Jan 2021 at 19:14, Jimmy Gauvin <[email protected]> wrote: > > > > > > IF your strings always have two numbers after the decimal point you could > > > remove the point before converting to numeric. > > > > > > NB.Remove decimal point > > > '.' -.~ each '123.45' ; '1456.12' > > > ┌─────┬──────┐ > > > │12345│145612│ > > > └─────┴──────┘ > > > > > > NB. Convert to numeric > > > _ ". > '.' -.~ each '123.45' ; '456.12' > > > 12345 45612 > > > > > > NB. type 4 is integer > > > 3!:0 ] _ ". > '.' -.~ each '123.45' ; '456.12' > > > 4 > > > > > > On Tue, Jan 5, 2021 at 10:43 AM Justin Paston-Cooper < > > > [email protected]> wrote: > > > > > > > Hello, > > > > > > > > I am reading in tab-separated files with readdsv from 'tables/dsv'. > > > > Some columns consist of exact decimal numbers like 6.66. These generally > > > > involve amounts of a decimal currency. These are read in by readdsv as > > > > boxed strings. makenum from 'tables/csv' converts these strings to > > > > floats. I would like these strings to be converted exactly to > > > > rationals. How can I go about this in the easiest and most efficient > > > > way? I could not find information on parsing data types from strings. > > > > > > > > Thanks in advance, > > > > > > > > Justin > > > > ---------------------------------------------------------------------- > > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
