Decimal 数据计算精度计算规则
2016-12-22 00:00
211 查看
结果精度和小数位数的绝对最大值为 38。当结果精度大于 38 时,相应的小数位数会减少,以避免结果的整数部分被截断。 你用精度都为 decimal(38,12) 的两数相乘除,其结果精度都远大于38,因此小数位数被截断.
参考地址: http://blog.csdn.net/tiger_zhao/article/details/45868793 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104687270e54f7327d818c027fa3cf1fd5791d1c053db2fa3a231206d3c2776000ad5448afad7624385577e6c097db14cabae23f5fff3047000bf64505a213&p=866fdc5b8e934eaf58ed8f2d02149f&newp=817ac64ad48917ff57ed947e5b5293231610db2151d7d7146b82c825d7331b001c3bbfb423231402d6c57e6407ad4e5becf23376340723a3dda5c91d9fb4c57479c271&user=baidu&fm=sc&query=decimal%BE%AB%B6%C8&qid=bc1b497c0001d785&p1=9
decimal型表达式 e1(精度为 p1,小数位数为 s1)和表达式 e2(精度为 p2,小数位数为 s2), 它们运算结果的位数有如下算法: 运算 结果精度 结果小数位数 ---------------------------------------------------------------- e1 + e2 max(s1, s2) + max(p1-s1, p2-s2) + 1 max(s1, s2) e1 - e2 max(s1, s2) + max(p1-s1, p2-s2) + 1 max(s1, s2) e1 * e2 p1 + p2 + 1 s1 + s2 e1 / e2 p1 - s1 + s2 + max(6, s1 + p2 + 1) max(6, s1 + p2 + 1) e1 { UNION | EXCEPT | INTERSECT } e2 max(s1, s2) + max(p1-s1, p2-s2) max(s1, s2) 在本例中,当e1/e2时,结果小数位数取 max(6,s1+p2+1),但s1+p2+1>38,所以为了不截断整数部分,系统取了6. 这就是为什么你把总精度设得那么高,小数部分反而总是6的原因。
参考地址: http://blog.csdn.net/tiger_zhao/article/details/45868793 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104687270e54f7327d818c027fa3cf1fd5791d1c053db2fa3a231206d3c2776000ad5448afad7624385577e6c097db14cabae23f5fff3047000bf64505a213&p=866fdc5b8e934eaf58ed8f2d02149f&newp=817ac64ad48917ff57ed947e5b5293231610db2151d7d7146b82c825d7331b001c3bbfb423231402d6c57e6407ad4e5becf23376340723a3dda5c91d9fb4c57479c271&user=baidu&fm=sc&query=decimal%BE%AB%B6%C8&qid=bc1b497c0001d785&p1=9
相关文章推荐
- SQL Server精度数据(decimal和numeric)在算术运算时的自动转换规则
- 数据精度个数是从首个不为零的数开始计算
- java.math.BigDecimal 对浮点数据的精度处理
- 设置EntityFramework中decimal类型数据精度
- NHibernate的Decimal数据精度问题,急啊
- BigDecimal.setScale()方法用于商业计算的精度设置问题详解
- Java中double数据类型计算会损失精度问题
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- 多精度计算备忘录之数据结构
- 多精度计算备忘录之数据结构
- BigDecimal 数据计算与精度舍入
- 关于k3中自定义字段的数据计算精度的问题
- 就Double、Decimal来说数据计算异常
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- 详解iOS之关于double/float数据计算精度问题
- Java 各数据类型计算的精度问题
- DoubleUtils:double数据计算的工具类,避免精度丢失
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- java中的数据精度计算问题
- C#数据计算精度比较低