MySQL数据浮点类型的实际应用操作
admin
2023-05-17 20:42:21
0

下文主要给大家带来MySQL数据浮点类型的实际应用操作,希望这些内容能够带给大家实际用处,这也是我编辑MySQL数据浮点类型的实际应用操作这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

1. 背景

  * MySQL支持的浮点类型中有单精度类型(float), 双精度类型(double),和高精度类型(decimal),在数字货币类型中推荐使用高精度类型(decimal)来进行应用.

 * MySQL浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。


2. 整数类型所需的存储和值范围

类型占用空间精度精确性
FLOAT4单精度精确到小数点后7位小数
DOUBLE8双精度精确到小数点后15位小数
DECIMAL变长高精度精确到小数点后65位小数

 

3. 浮点数应用中的 M / G * G (!=|=)(不一定等于) M

   M = 3.1415 G = 2.1542,统一精确到小数点后6位

   * 单精度(float)应用

   * 创建float_test 表

mysql> CREATE TABLE float_test(
    -> m FLOAT(10,6),
    -> g FLOAT(10,6)
    -> )ENGINE=INNODB CHARSET=utf8mb4;
Query OK, 0 rows affected (0.06 sec)

   * 插入 m 与 g 的数据

mysql> INSERT INTO float_test SELECT 3.1415,2.1542;
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from float_test;
+----------+----------+
| m        | g        |
+----------+----------+
| 3.141500 | 2.154200 |
+----------+----------+
1 row in set (0.00 sec)

   * 进行 M / G * G 运算

mysql> SELECT m / g * g, m FROM float_test;
+--------------+----------+
| m / g * g    | m        |
+--------------+----------+
| 3.1414999962 | 3.141500 |
+--------------+----------+
1 row in set (0.00 sec)


   * 双精度(double)应用

   * 创建double_test 表

mysql> CREATE TABLE double_test(
    -> m DOUBLE(10,6),
    -> g DOUBLE(10,6)
    -> )ENGINE=INNODB CHARSET=utf8mb4;
Query OK, 0 rows affected (0.08 sec)

   * 插入 m 与 g 的数据

mysql> INSERT INTO double_test SELECT 3.1415,2.1542;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from double_test;
+----------+----------+
| m        | g        |
+----------+----------+
| 3.141500 | 2.154200 |
+----------+----------+
1 row in set (0.00 sec)

   * 进行 M / G * G 运算

mysql> SELECT m / g * g, m FROM double_test;
+--------------+----------+
| m / g * g    | m        |
+--------------+----------+
| 3.1415000000 | 3.141500 |
+--------------+----------+
1 row in set (0.01 sec)


   * 高精度(decimal)应用

   * 创建decimal_test 表

mysql> CREATE TABLE decimal_test(
    -> m DECIMAL(10,6),
    -> g DECIMAL(10,6)
    -> )ENGINE=INNODB CHARSET=utf8mb4;
Query OK, 0 rows affected (0.05 sec)

   * 插入 m 与 g 的数据

mysql> INSERT INTO decimal_test SELECT 3.1415,2.1542;
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM decimal_test;
+----------+----------+
| m        | g        |
+----------+----------+
| 3.141500 | 2.154200 |
+----------+----------+
1 row in set (0.00 sec)

   * 进行 M / G * G 运算

mysql> SELECT m / g * g, m FROM decimal_test;
+--------------------+----------+
| m / g * g          | m        |
+--------------------+----------+
| 3.1415000000000000 | 3.141500 |
+--------------------+----------+
1 row in set (0.00 sec)


4. 浮点类型应用总结

  * 浮点数如果不写精度和标度,则会按照实际显示

 * 如果有精度和标度,则会将数据四舍五入后插入,系统不报错

 * DECIMAL如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会报错。

  * 账务、账务系统必须要用DECIMAL类型确定精确与资金安全。


5. 总结


以需求驱动技术,技术本身没有优略之分,只有业务之分。

对于以上关于MySQL数据浮点类型的实际应用操作,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

相关内容

热门资讯

原创 外... 外星翻译官的翻车现场:地球语言真的太难了! 银河系翻译官协会(假想机构)最近发布了一份年度报告,总...
首飞成功!已突破大重量载荷发射... 科技日报记者 付毅飞 实习生 张城辉 记者从蓝箭航天获悉,5月14日11时0分,朱雀二号改进型遥五运...
京东携手MAXHUB共推AI智... PChome消息,近日,京东与智能会议平板领域领军品牌MAXHUB正式签署战略合作协议,标志着双方战...
29个智能气象站启动业务试运行 本报北京5月15日电(记者李红梅)记者从中国气象局获悉:北京密云等29个智能气象站已于近日启动业务试...
广西一载15人车辆坠河,10人... 记者从广西环江毛南族自治县相关方面获悉,据初步了解,5月16日21时30分许,一辆汽车在环江县洛阳镇...
iOS 26.5更新苹果地图两... 苹果地图是iOS 26.5此次更新中获得新功能的应用之一。以下是地图用户需要了解的最新变化。 推荐...
每经热评 | 黄仁勋喝蜜雪冰城... 每经评论员 朱成祥 黄仁勋近期到访北京,被拍到在胡同喝豆汁、吃炸酱面、举着蜜雪冰城饮料。他表情轻松,...
我省3项目被列入工信部先进计算... 本报太原5月15日讯(记者王蕾)近日,工业和信息化部公布了2025年先进计算赋能新质生产力典型应用案...
薛贵:学习的革命——脑科学与人... 1 学习的本质不是知识的装卸, 而是雕刻大脑的“芯片” 耶鲁大学前校长理查德·查尔斯·莱文曾说过:如...
伊朗:已制定管理霍尔木兹海峡指... 新华社德黑兰5月16日电 伊朗伊斯兰议会国家安全和外交政策委员会主席易卜拉欣·阿齐兹16日在社交媒体...