Comparing Floating Point Integers In Golang
The Loop and Functions exercise in gotour requires the implementation of the square root function using Newton's method. And one of its challenges is to
stop once the value has stopped changing (or only changes by a very small delta)
A naive approach of using the golang ==
comparison operator on float64 types will lead to an infinite loop in this exercise.
The way I solve this challenge is by specifying a tolerance, such that two float64 operands are consider equal when the absolute value of their deltas are smaller than the tolerance.
const TOLERANCE = 0.000001
for {
// Newton's method
if diff := math.Abs(result - temp); diff < TOLERANCE { // consider equal and break
break
} else {
// do something and continue
}
}
My full solution to this exercise can be found here. The same repo also contains solutions to other exercises in gotour.
Written by Ivan Sim
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ivanhcsim
Authors
ihcsim
751.3K
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#