From: Sam Kong Date: 2007-02-12T04:30:05+09:00 Subject: What's the correct and fast way to determine if a (gig) number is a perfect square? Hello, I'm solving a math problem in Ruby. I need to determine if a number is a perfect square. If the number is small, you may do like the following. def perfect_square? n sqrt = n ** 0.5 sqrt - sqrt.to_i == 0 end But Float number has limitation on precision. Thus the function won't work correctly for big numbers like (123456789123456789). How would you solve such a case? It should be fast as well as correct because I will use it repeatedly. Thanks in advance. Sam