(My)SQL中的十进制乘法的精度和小数位数

时间:2012-09-19 18:14:36

标签: mysql decimal scale precision

假设我有两个号码num1(p1,s1)num2(p2, s2)(其中ps分别是精度和比例)。

计算num1num2结果的精确度和比例的规则是什么?

直观地,比例将是s1s2的总和(因为这就是你在1年级进行乘法的方法!),但我无法弄清楚找到精度的规则。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为你已经宣布这两个数字类似于以下内容,因为你问题中的语法不是SQL:

CREATE TABLE decimals (num1 DECIMAL(p1,s1), num2 DECIMAL(p2,s2));

精度只是存储数字的位数,而缩放是小数点后的数量。

所以,你是正确的,乘法的比例是s1 + s2,但最大精度也是p1 + p2的总和。实际精度可能小于此值,具体取决于乘以的数字。

示例

从可以存储为DECIMAL(2,1)的数字开始:

SELECT 9.9 * 9.9;

提供98.01,可以存储为DECIMAL(4,2)

SELECT 9.9 * 0.5;

提供4.95,可以存储为DECIMAL(3,2)