[Jprogramming] String to Rational

Henry Rich henryhrich at gmail.com
Wed Jan 6 16:04:42 UTC 2021


For domain errors, Look at the Dissect tool.

Henry Rich

On 1/6/2021 3:40 AM, Justin Paston-Cooper wrote:
> I should add how it works:
>
> On the right, 10^(The position of '.' in the number minus 1)
> On the left, remove '.' and parse as number
> In the middle, apply x: to both sides and divide.
>
> Also, how can I go about actually debugging domain errors? Both sides
> seem to be zero-dimensional.
>
> On Wed, 6 Jan 2021 at 10:20, Justin Paston-Cooper
> <paston.cooper at gmail.com> 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 <jimmy.gauvin at gmail.com> 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 <
>>> paston.cooper at gmail.com> 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


-- 
This email has been checked for viruses by AVG.
https://www.avg.com



More information about the Programming mailing list