Thanks a lot Jeremy. This is indeed the problem. I didn't even know that
there was a DECIMAL/NUMERIC data type-- now I've switched over to that.
On Monday, January 7, 2013 8:19:04 PM UTC-5, Jeremy Evans wrote:
>
> On Monday, January 7, 2013 3:27:58 PM UTC-8, Sean Mackesey wrote:
>>
>> I have a database entry (with model class `Number`) that I can't seem to
>> match against. It has a field called "value", and the value appears to be
>> 5.1. But I can't seem to match it via Sequel's `first` and `where`
>> methods. There are other entries in the table that I have no trouble
>> matching by the `value` field. What's going on?
>>
>> [37] pry(#<CountInference::Optimization::NumMarkerLoader>)> Number[17]
>> => #<Number @values={:id=>17, :raw=>"5.1p#CA1:SR:do/CCK+#CB+",
>> :value=>5.1, :std=>0.0, :type=>""}>
>> [38] pry(#<CountInference::Optimization::NumMarkerLoader>)>
>> Number[17].value
>> => 5.1
>> [39] pry(#<CountInference::Optimization::NumMarkerLoader>)>
>> Number[17].value == 5.1
>> => true
>> [40] pry(#<CountInference::Optimization::NumMarkerLoader>)>
>> Number.first(value: 5.1)
>> => nil
>> [42] pry(#<CountInference::Optimization::NumMarkerLoader>)>
>> Number.where(value: 5.1).all
>> => []
>>
>
> The value column is probably floating point (real or double precision
> database type). You should not use equality when dealing with floating
> point numbers, in ruby, SQL, or any other programming language. If you
> don't understand how to use floating point numbers, Google should be able
> to help you.
>
> Try something like:
>
> Number.where(value: (5.09999999999)..(5.100000000001)).all
>
> Alternatively, if you want to use equality and can change the database
> type, switch to a decimal/numeric type instead of a floating point type.
>
> Thanks,
> Jeremy
>
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/sequel-talk/-/L6hWu2K8U7sJ.
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
http://groups.google.com/group/sequel-talk?hl=en.