I think this link might clear things up, [The Open Group Base Specifications Issue 7, IEEE Std 1003.1, 2013 Edition][1]. Here's an excerpt of the section form the specification for find:

*excerpt from the find spec*

> The -size operand refers to the size of a file, rather than the number
> of blocks it may occupy in the file system. The intent is that the
> st_size field defined in the System Interfaces volume of POSIX.1-2008
> should be used, not the st_blocks found in historical implementations.
> There are at least two reasons for this:
> 
> In both System V and BSD, find only uses st_size in size calculations
> for the operands specified by this volume of POSIX.1-2008. (BSD uses
> st_blocks only when processing the -ls primary.)
> 
> Users usually think of file size in terms of bytes, which is also the
> unit used by the ls utility for the output from the -l option. (In
> both System V and BSD, ls uses st_size for the -l option size field
> and uses st_blocks for the ls -s calculations. This volume of
> POSIX.1-2008 does not specify ls -s.)

If I understand this section correctly, the first section says it all "The -size operand refers to the size of a file". So the size is what's reported when evaluating st_size NOT st_blocks.

### Examples
So you should be able to use commands like:

 # find files over 1G in size
 find / -type f -size +1G
 
 # find files smaller than 1G in size
 find / -type f -not -size +1G


 [1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html