On Tue, Jun 26, 2012 at 10:47 PM, ideal one <[email protected]> wrote:
> Hi,
> Actually if you see my gross1 and gross2 values, the differences are
> only at decimal level.
> the first 3 numbers are in most cases matching.
> So maybe i should go for 3 number/character match depending whether i am
> retrieving it as a number or a string.
I would not do any string comparison. The usual way is to define
either a max difference or a max factor between two values.
irb(main):001:0> gross1 = 567.45 * 10
=> 5674.5
irb(main):002:0> gross2 = 567.88 * 10
=> 5678.8
irb(main):003:0> (gross2 - gross1).abs
=> 4.300000000000182
irb(main):004:0> (gross2 - gross1).abs < 5
=> true
irb(main):005:0> ([gross1, gross2].max / [gross1, gross2].min)
=> 1.000757776015508
irb(main):006:0> ([gross1, gross2].max / [gross1, gross2].min) < 1.1
=> true
Since we're talking about currency values: note also there is
BigDecimal for higher precision:
irb(main):007:0> require 'bigdecimal'
=> true
irb(main):008:0> gross1 = BigDecimal('567.45')*10
=> #<BigDecimal:202be524,'0.56745E4',18(45)>
irb(main):009:0> gross2 = BigDecimal('567.88')*10
=> #<BigDecimal:202bbdec,'0.56788E4',18(45)>
irb(main):010:0> (gross2 - gross1).abs
=> #<BigDecimal:202b7990,'0.43E1',18(36)>
irb(main):011:0> (gross2 - gross1).abs.to_s
=> "0.43E1"
irb(main):012:0> (gross2 - gross1).abs < 5
=> true
irb(main):013:0> ([gross1, gross2].max / [gross1, gross2].min)
=> #<BigDecimal:202aa420,'0.1000757776 0155079742 70860869E1',36(45)>
irb(main):014:0> ([gross1, gross2].max / [gross1, gross2].min).to_s
=> "0.1000757776015507974270860869E1"
irb(main):015:0> ([gross1, gross2].max / [gross1, gross2].min) < 1.1
=> true
Cheers
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
-- You received this message because you are subscribed to the Google Groups
ruby-talk-google group. To post to this group, send email to
[email protected]. To unsubscribe from this group, send email
to [email protected]. For more options, visit this
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en