请问老师为什么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);

http://img.mukewang.com/climg/5a5adc25000156d603070170.jpg

有两个问题:

  1. 为什么decimal是5?老师说decimal会保留整数,那么decimal省略D和M的时候D和M是多少呢?

  2. 同样都是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控制您需要的精度就可以了。

如果解决了您的问题,请采纳,祝学习愉快~


0

0 学习 · 2569 问题

查看课程