[Python-ideas] Way to check for floating point "closeness"?
Neil Girdhar
mistersheik at gmail.com
Thu Jan 15 23:10:55 CET 2015
The problem with this is that if your "actual" is say, 5, then a large
enough "estimate" will always be close.
On Thu, Jan 15, 2015 at 5:06 PM, Ron Adam <ron3200 at gmail.com> wrote:
>
>
> On 01/15/2015 03:47 PM, Ron Adam wrote:
>
>> How about this?
>>
>>
>> def is_close(x, y, delta=.001):
>> """ Check is x and y are close to each other. """
>> if x == y:
>> return True # Can't get smaller than this.
>> if x == 0 or y == 0:
>> return False # Nothing is close to zero.
>> if abs(x) < abs(y): # Make x the larger one.
>> x, y = y, x
>> if x * y < 0: # Signs differ.
>> x = x - 2.0 * y # Move x and y same distance.
>> y = -y
>> return (x - y)/float(x) <= delta
>>
>
>
> Remove the check of one being zero, it isn't needed.
>
> def is_close(x, y, delta=.001):
> """ Check is x and y are close to each other. """
> if x == y:
> return True # Can't get smaller than this.
> if abs(x) < abs(y): # Make x the larger one.
> x, y = y, x
> if x * y < 0: # Signs differ.
> x = x - 2.0 * y # Move x and y same distance.
> y = -y
> return (x - y)/float(x) <= delta
>
>
> If one of them is zero, then you get a ratio of one. So a delta of 1 would
> mean everything is close.
>
> -Ron
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
> --
>
> --- You received this message because you are subscribed to a topic in the
> Google Groups "python-ideas" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/python-ideas/zpfXmlTOp2I/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> python-ideas+unsubscribe at googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150115/051532af/attachment.html>
More information about the Python-ideas
mailing list