-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Zhou Minghong edited this page Apr 3, 2019
·
9 revisions
Welcome to the decimal wiki! sql decimal允许用户自定义digits位数。(mysql 源码注释中包含了sql标准对decimal的描述)
使用long long作为decimal数据类型的底层表示。另外还需要一个额外存储记录scale(取值0-18)
long long 拥有8个byte,可以表示-99999...999 ~ 999...999 (18个9).
因此decimal的加减乘除都可转化为long long的计算。
- 加减法:
- 对齐小数点,即将scale小的decimal对应的longlong乘以10^(scale1-scale2)
- 对齐的两个longlong相加,同时返回结果对应的scale
- 乘法:
- 两个longlong相乘
- 由相乘两数的scale计算记过的scale
- 除法:
- 转换为double相除
参考: