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

Reply via email to