当我保存这种类型的值时,我在表格中定义了DECIMAL(5,3)
的整数:4.500
一切正常,但有时,值如下:300
和{{ 1}}返回值超出范围。我应该增加长度吗?
答案 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,为您的要求提供更多空间;我也评论 对您来说,这是存储数字数据更准确的数据类型 主要是价格数据