超出范围的值与特定数字

时间:2018-05-26 15:51:26

标签: mysql sql

当我保存这种类型的值时,我在表格中定义了DECIMAL(5,3)的整数:4.500一切正常,但有时,值如下:300和{{ 1}}返回值超出范围。我应该增加长度吗?

3 个答案:

答案 0 :(得分:3)

您的价值超出范围且具有特定数量"您已将列定义为:

#include <stdio.h>

//prototypes
void readFirms(char *filename);

int main(void) {

    readFirms("C:\\Users\\hakan\\Desktop\\firms.txt");

}

void readFirms(char *filename) {
    FILE *firmFilePtr;

    if ((firmFilePtr = fopen(filename, "r")) == NULL) {
        puts("File could not be opened.");
    } else {
        unsigned int firmId;
        char *firmName;

        fscanf(firmFilePtr, "%d%s", &firmId, firmName);

        while (!feof(firmFilePtr)) {
            printf("%d %s\n", firmId, *firmName);
            fscanf(firmFilePtr, "%d %s", &firmId, firmName);
        }
        fclose(firmFilePtr);
    }
}

这意味着它可以接受-99.999到99.999之间的值。

说明:

DECIMAL的第一个参数叫做PRECISION,第二个是SCALE。

精度的整数位置将从&#34; 5&#34;到&#34; 2&#34;因为SCALE保留&#34; 3&#34;准确的地方。

所以,你必须增加你的DECIMAL长度。

答案 1 :(得分:2)

是的,你应该增加长度。该值应足够大,以存储您所需的内容:

alter table t modify column col decimal(10, 3);

答案 2 :(得分:0)

您需要以这种方式更改原始值

>>> s
0
AABA    0.001028
AAL     0.000975
AAME   -0.000056
AAPL   -0.000749
AAWW    0.000311
Name: 1, dtype: float64

>>> items = s.to_dict().items()
>>> list(items)
[('AABA', 0.0010279999999999998), ('AAL', 0.000975), ('AAME', -5.6000000000000006e-05), ('AAPL', -0.000749), ('AAWW', 0.00031099999999999997)]
>>> for item in items:
    print(item)

('AABA', 0.0010279999999999998)
('AAL', 0.000975)
('AAME', -5.6000000000000006e-05)
('AAPL', -0.000749)
('AAWW', 0.00031099999999999997)
>>>
  

例如5,为您的要求提供更多空间;我也评论   对您来说,这是存储数字数据更准确的数据类型   主要是价格数据