请问老师为什么c的decimal是5
来源:2-15 测试浮点类型
BingXiong
2018-01-14 12:35:45
CREATE TABLE test_float1( a FLOAT, b DOUBLE, c DECIMAL ); INSERT test_float1(a,b,c) VALUES(4.143,4.146,4.649);
有两个问题:
为什么decimal是5?老师说decimal会保留整数,那么decimal省略D和M的时候D和M是多少呢?
同样都是4点几的数,省略D和M的情况都是保留到4.xxx,但是decimal只保留了整数到5,为什么老师最后一句话说如果精度比较高的时候选择decimal类型?
1回答
imooc_澈
2018-01-15
您好,这里为5是decimal默认保存的,这只是其中一种现象,我们说的精确度是指为这个值保存的有效数字的总个数,这三种数据类型中,decimal是最高的。
例如:
float f = 345.98756f;--结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
double d=345.975423578631442d;--结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。
decimal dd=345.545454879.....--可以支持28位,对最后一位四舍五入。
注:当对decimal类型进行操作时,数值会因溢出而报错。
老师在课堂中的演示也表明,当进行四舍五入时,float和double类型是默认的,有精度损失,而decimal会报warning错误。存储时使用D,M控制您需要的精度就可以了。
如果解决了您的问题,请采纳,祝学习愉快~
相似问题