我正在使用 SQL Server Management Studio 并具有以下架构:
CREATE TABLE tmp(
id int NOT NULL IDENTITY(1,1)PRIMARY KEY,
toleranceRegion DECIMAL
)
然后我执行以下插入:
INSERT INTO tmp VALUES(3.2);
INSERT INTO tmp VALUES(5.678);
INSERT INTO tmp VALUES(1.95);
预期输出:
id toleranceRegion
-- ---------------
1 3.2
2 5.678
3 1.95
实际输出:
id toleranceRegion
-- ---------------
1 3
2 6
3 2
为什么插入的 toleranceRegion 值被四舍五入到最接近的整数?
原文由 Adam Freymiller 发布,翻译遵循 CC BY-SA 4.0 许可协议
您没有为小数定义比例/精度。如果您想要小数点后 3 位数字,则应将其定义为 DECIMAL(9,3),这将为您提供小数点前 6 位和最多 3 位的小数。 您需要分析预期数据并根据预期为列定义指定正确的精度和比例。
在 此处查看十进制 的 Sql Server 文档。