From: John Kopanas Date: 2007-01-25T03:46:00+09:00 Subject: Re: Exception Handling/Divide By Zero/NaN Done on One Line I need to keep it as a float... that is my problemo :-(. On 1/24/07, Rob Biedenharn wrote: > > On Jan 24, 2007, at 10:52 AM, ara.t.howard@noaa.gov wrote: > > > On Thu, 25 Jan 2007, John Kopanas wrote: > > > >> I have the following: > >> > >> a = (y != 0) ? (x/y) : 0 > >> > >> There must be a sexier way of doing this! Any suggestions? > >> > >> On a side note... how do we do exception handling on the same line > >> as statement? > >> > >> a = x/y rescue 0 > >> > >> That does not work but does it make sense? Is it because dividing by > >> zero does not throw an exception? > >> > >> Thanks for your help! :-) > >> > > > > works for me? > > > > harp:~ > ruby -e' a = 42/0 rescue 42; p a ' > > 42 > > > > i think you're doing the right thing with > > > >> a = x/y rescue 0 > > > > how doesn't it work? > > > > regards. > > > > -a > > -- > > we can deny everything, except that we have the possibility of > > being better. > > simply reflect on that. > > - the dalai lama > > If you're not limited to Integers: > > >> 1/0 > ZeroDivisionError: divided by 0 > from (irb):1:in `/' > from (irb):1 > >> 1.0/0 > => Infinity > >> 1/0.0 > => Infinity > >> 0.0/0.0 > => NaN > >> > > If either x or y are Float, then dividing by zero isn't an exception. > > You could force an exception if you want to get back to an Integer: > > >> (1.0/0).to_i > FloatDomainError: Infinity > from (irb):7:in `to_i' > from (irb):7 > >> (0.0/0.0).to_i > FloatDomainError: NaN > from (irb):8:in `to_i' > from (irb):8 > > -Rob > > Rob Biedenharn http://agileconsultingllc.com > Rob@AgileConsultingLLC.com > > > > -- John Kopanas john@kopanas.com http://www.kopanas.com http://www.cusec.net http://www.soen.info