美文网首页
关于数据库存储小数的数据问题的简单介绍

关于数据库存储小数的数据问题的简单介绍

作者: Chzzr | 来源:发表于2019-01-08 00:25 被阅读0次

Float与Decimal


Float


对于单精度浮点数Float:  当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,但是超出这个范围的数据就不稳定;

不稳定体现在:例如同样插入一个数值为由131072.32的两条数据,131072.32可能变成了131072.31也可能保持131072.32,这就是浮点数的不精确性造成的。

踩到的坑:

用户积分字段设置为float(11,1),存储的最小值与最大值为0.0(无符号)|-9999999999.9(有符号)与9999999999.9,当数值超过整数位数为8位时,抽奖进行计算扣除100的积分,数据库score=score-100的实际结果只有减去96,而进行1000积分的减法时,数据准确。


Decimal


用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。

DECIMAL(P,D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。

与INT数据类型一样,DECIMAL类型也具有UNSIGNED和ZEROFILL属性。 如果使用UNSIGNED属性,则DECIMAL UNSIGNED的列将不接受负值。

如果要遵守公认会计原则(GAAP)规则,则货币栏必须至少包含4位小数,以确保舍入值不超过$0.01。


共性:


输入的小数位数超出范围,将自动进行四舍五入处理后写入;

若数值在其取值范围之外,则直接报Out of range value错误。 


注意


很多小数根本无法在二进制计算机中精确表示(比如最简单的 0.1)由于浮点数尾数域的位数是有限的,为此,浮点数的处理办法是持续该过程直到由此得到的尾数足以填满尾数域,之后对多余的位进行舍入。

所以在小数在进行计算的时候在php可以引用bcadd、bcsub、bcmul、bcdiv等精度计算的方法进行计算。

相关文章

  • 关于数据库存储小数的数据问题的简单介绍

    Float与Decimal Float 对于单精度浮点数Float: 当数据范围在±131072(65536×2)...

  • 03.1Chapter 2019-12-13

    前面介绍了整型数据类型,用于存储整型数据。现实问题中不但有整型数值,还有小数。Java语言也提供了针对小数的存储类...

  • iOS Swift 本地存储相关

    FMDB数据库存储 一、简单介绍 什么是FMDBFMDB 是 iOS 平台的 SQLite 数据库框架。FMDB ...

  • MySQL介绍

    mysql介绍 其他数据库介绍 mysql特点 mysql存储引擎类型及特点 关于mysql单表存储 mysql介...

  • swift微博第25天(SQLite)

    一、数据库的简单介绍 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库 数据库可以分为2大种类...

  • MongoDB入门学习1 - 使用介绍

    1,MongoDB简单介绍 1.1,NoSQL数据库 数据库:进行高效的、有规则的进行数据持久化存储的软件 NoS...

  • 测序数据的获取

    一、数据库简单介绍 1、SRA数据库: NCBI的SRA数据库是美国国立卫生研究院(NIH)存储高通量测序数据的主...

  • Sqoop导入的数据格式问题

    Sqoop简单介绍 Sqoop是用来在Hadoop平台和其他结构性存储(比如关系型数据库)之间解决大量数据传输问题...

  • 爬虫 之 数据存储

    爬虫采集下来的数据我们需要将其存储起来,可以存储为文本,也可以将其存到数据库中,下面简单介绍一下存入数据库中 首先...

  • MySQL数据库(一)——数据库简介

    本节介绍数据库的基本概念,包括数据库存储方式、数据库技术的发展历史、数据库的存储结构以及数据库在开发中的作用。 数...

网友评论

      本文标题:关于数据库存储小数的数据问题的简单介绍

      本文链接:https://www.haomeiwen.com/subject/jirmrqtx.html