That works as long as you can live with tolerant comparisons.

   0.5=0.5-1e_14
1
   0.5-0.5-1e_14
9.99201e_15

-- 
Raul

On Tue, Jan 22, 2013 at 2:26 PM, Devon McCormick <[email protected]> wrote:
> I've used this for a long time but it's scarcely tacit:
>
>    roundNums=: 3 : 0"1 0
> NB.* roundNums: round numbers y to precision x, e.g.
> NB. 0.1 roundNums 1.23 3.14159 2.718 -> 1.2 3.1 2.7.
> NB. Optional 2nd left argument is single letter specifying
> NB. type of rounding: Up, Down, or Banker's.  Default
> NB. banker's rounding (round halves up or down depending on
> NB. parity of next (scaled) digit) tends to randomize bias.
>    1 roundNums y
> :
>    RT=. 'B'                   NB. Default to Banker's rounding
>    TO=. x                     NB. Precision to which to round.
>    if. (2=#x)*.1=L. x do. 'TO RT'=. x end.
>    scaled=. y%TO              NB. For Banker's: round down if last digit
> even,
>    select. RT
>    case. 'B' do. RN=. 0.5*(0~:2|<.scaled)+.0.5~:1|scaled   NB. up if odd.
>    case. 'D' do. RN=. (0.5=1|scaled){0 _0.5       NB. Round halves down.
>    case. 'U' do. RN=. 0.5                         NB. Round halves up.
>    end.
>    TO*<.scaled+RN
> )
>
>
>
> On Tue, Jan 22, 2013 at 1:26 PM, Raul Miller <[email protected]> wrote:
>
>> That's not something that can be resolved by a simple utility that
>> handles floating point numbers.  So if this is an issue you should
>> implement something that fits your problem domain.
>>
>> --
>> Raul
>>
>> On Tue, Jan 22, 2013 at 1:24 PM, Devon McCormick <[email protected]>
>> wrote:
>> > A bigger problem might be the slight upward bias in this algo.  It's
>> > exacerbated if you have a lot of halves in your data:
>> >
>> >    rr=. -: 100?@$100
>> >    usus rr            NB. usus -> usual stats: Min, max, mean, SD
>> > 0 49.5 27.63 14.7935
>> >    usus round rr      NB. Higher mean: significant?
>> > 0 50 27.9 14.7802
>> >
>> >    mean&> (round;]) -: 100?@$100
>> > 22.28 21.975
>> >    -/mean&> (round;]) -: 100?@$100
>> > 0.275
>> >    -/mean&> (round;]) -: 100?@$100
>> > 0.225
>> >
>> >    $100 ([: -: ?@$)&.>100$100
>> > 100
>> >
>> >    usus ([: -/ [: mean&> round ; ]) &> 100 ([: -: ?@$)&.>1e6$100
>> > 0.13 0.365 0.250008 0.0249975
>> >    NB. Could be significant...
>> >
>> >
>> > On Tue, Jan 22, 2013 at 12:08 PM, Raul Miller <[email protected]>
>> wrote:
>> >
>> >> I don't think that that definition of round can be tacit and use under.
>> >>
>> >> A tacit implementation might be:
>> >>    1&$: : ([ * <.@+~&1r2@%~)
>> >>
>> >> Note also: this is a verb, not an adverb. In this definition, 1 is the
>> >> default value for x, not a control argument for :
>> >>
>> >> FYI,
>> >>
>> >> --
>> >> Raul
>> >>
>> >> On Tue, Jan 22, 2013 at 11:55 AM, David Ward Lambert
>> >> <[email protected]> wrote:
>> >> >    round =: 1&$: : (dyad def '<.@:(1r2+])&.:(%&x) y')
>> >> >    assert 1 -: round 1.2
>> >> >    assert 1.25 -: 0.25 round 1.2
>> >> >
>> >> >    Round =: adverb def '<.@:(1r2+])&.:(%&m) y'
>> >> >
>> >> > Is there a tacit definition of round using under?
>> >> > What is the tacit definition of adverb Round?
>> >> > Thanks, Dave.
>> >> >
>> >> > ----------------------------------------------------------------------
>> >> > For information about J forums see
>> http://www.jsoftware.com/forums.htm
>> >> ----------------------------------------------------------------------
>> >> For information about J forums see http://www.jsoftware.com/forums.htm
>> >>
>> >
>> >
>> >
>> > --
>> > Devon McCormick, CFA
>> > ^me^ at acm.
>> > org is my
>> > preferred e-mail
>> > ----------------------------------------------------------------------
>> > For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>
>
>
> --
> Devon McCormick, CFA
> ^me^ at acm.
> org is my
> preferred e-mail
> ----------------------------------------------------------------------
> 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