Обсуждение: Re: [GENERAL] Cast double precision to integer & check for overflow

Поиск
Список
Период
Сортировка

Re: [GENERAL] Cast double precision to integer & check for overflow

От
"Alexander Gataric"
Дата:
Just cast to integer. Decimal portion will be lost.

Sent from my smartphone

----- Reply message -----
From: "Ian Pilcher" <arequipeno@gmail.com>
To: <pgsql-general@postgresql.org>
Subject: [GENERAL] Cast double precision to integer & check for overflow
Date: Sat, Jan 26, 2013 3:13 pm


I need to cast a double precision into an integer, and I want to check
that the value will actually fit (modulo rounding).

Coming from a C/Java background, this seems like something that should
be utterly trivial.  In my searching, however, I can't seem to find any
SQL equivalent of INT_MAX, Integer.MAX_VALUE, etc.

Do I have to hard-code this value?

Thanks!

(And yes, I do feel stupid having to ask this question here.)

--
========================================================================
Ian Pilcher                                         arequipeno@gmail.com
Sometimes there's nothing left to do but crash and burn...or die trying.
========================================================================



--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: Cast double precision to integer & check for overflow

От
Ian Pilcher
Дата:
On 01/26/2013 05:06 PM, Alexander Gataric wrote:
> Just cast to integer. Decimal portion will be lost.

That part I've got.  :-)

It's checking that the double precision value will actual fit within the
range of the integer type (-2147483648 to +2147483647).  I could
certainly hard-code these values, but I'd like to use a more expressive
syntax, if it is available.

--
========================================================================
Ian Pilcher                                         arequipeno@gmail.com
Sometimes there's nothing left to do but crash and burn...or die trying.
========================================================================


Re: Cast double precision to integer & check for overflow

От
Adrian Klaver
Дата:
On 01/26/2013 03:09 PM, Ian Pilcher wrote:
> On 01/26/2013 05:06 PM, Alexander Gataric wrote:
>> Just cast to integer. Decimal portion will be lost.
>
> That part I've got.  :-)
>
> It's checking that the double precision value will actual fit within the
> range of the integer type (-2147483648 to +2147483647).  I could
> certainly hard-code these values, but I'd like to use a more expressive
> syntax, if it is available.
>

http://www.postgresql.org/docs/9.2/interactive/catalog-pg-type.html

production=# SELECT typname,typlen from pg_type where typname ='int8';
-[ RECORD 1 ]-
typname | int8
typlen  | 8



--
Adrian Klaver
adrian.klaver@gmail.com