Целое число из диапазона на Пост-ГРЭС DB

Еще одна возможность генерировать интерфейс C - Octave - использовать SWIG , который может генерировать один файл .oct со всеми вашими функциями. См. здесь при использовании указателей и массивов.

Вот пример:

header

/* File: example.h */

int fact(int n);

int fact2(int n1, int n2);

void add(int *x, int *y, int *r);

source

/* File: example.c */

#include "example.h"

int fact(int n) {
    if (n < 0){ /* This should probably return an error, but this is simpler */
        return 0;
    }
    if (n == 0) {
        return 1;
    }
    else {
        /* testing for overflow would be a good idea here */
        return n * fact(n-1);
    }
}

int fact2(int n1, int n2) {
    return fact(n1)*fact(n2);
}

void add(int *x, int *y, int *r) {
    *r = *x + *y;
}

interface

/* File example.i */
%module swigexample
%include "cpointer.i"

%{
#include "example.h"
%}

%pointer_functions(int, intp)

%include "example.h"

compile

[113 ]

тест

% File test.m
swigexample;
fact(5)
fact2(4,4)
% ==============
a = new_intp();
intp_assign(a, 37);
b = new_intp();
intp_assign(b, 22);
c = new_intp();
add(a,b,c);
r = intp_value(c);
delete_intp(a);
delete_intp(b);
delete_intp(c);
r

28
задан Rohit 14 March 2011 в 06:01
поделиться

3 ответа

Что за вопрос? Вы переполнены. Используйте bigint, если вам нужны такие большие числа.

http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html

19
ответ дан 28 November 2019 в 02:25
поделиться

Обратите внимание на диапазон допустимых значений для целочисленного типа в http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html . Я думаю, что вам придется использовать bigint, десятичную или двойную точность.

1
ответ дан ysth 28 November 2019 в 02:25
поделиться

Целые числа PostgreSQL подписаны, нет типа данных без знака - я уверен, что это ваша проблема.

Если вам нужны большие значения, используйте bigint. Если bigint тоже недостаточно, используйте числовые, но используйте bigint, а не числовые, если вам не нужен больший размер или десятичные дроби, так как это намного быстрее.

1
ответ дан 28 November 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: