float与decimal区别

生活经验025

本文目录

float与decimal区别,第1张

  1. lreal是什么数据类型?
  2. money类型的数据应如何定义?
  3. gis添加字段坐标选什么类型?
  4. mysql建表时的价格用什么类型定义?
  5. 100%属于什么类型的数据?

lreal是什么数据类型?

real指的是一种Pascal语言,是Pascal语言中提供的5种实数类型之一,输出格式一般为:X.XXXXXXXXXXXXE+XXXX(每一个X代表不同的数字)。

近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。由于float和real数据类型的这种近似性,当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用integer、decimal、money或smallmone数据类型。在WHERE子句搜索条件中(特别是=和运算符),应避免使用float或real列。最好限制使用float和real列做>或<的比较。

IEEE 754规格提供了四种舍入模式:舍入到最接近的值、上舍入、下舍入和舍入到零。Microsoft? SQL Server?使用上舍入。所有的数值必须精确到确定的精度,但会产生细小的浮点值变化。因为浮点数字的二进制表示法可以采用很多合法舍入规则中的任意一条,因此我们不可能可靠地量化一个浮点值。

money类型的数据应如何定义?

在定义"money"类型的数据时,可以考虑以下属性和规范:1. 数据类型:通常,"money"类型的数据可以定义为浮点数(float)或固定小数点数(decimal)。浮点数可以处理更大的数额,但会存在舍入误差。固定小数点数则是用于精确计算货币金额的较好选择。2. 小数位数:货币金额常常需要定义小数位数。一般来说,小数位数为2(两位小数)是最常见的。不过,根据具体要求,也可以定义更多或更少的小数位数。3. 货币符号:在某些情况下,需要在金额数据的前面或后面添加货币符号,例如"$"或"¥"。这取决于所使用的货币符号和国际化需求。4. 正负值:考虑到金额可以是正数或负数,可以添加一个正负符号以表示其正负值。综上所述,一个基本的"money"类型的数据定义可以如下所示:```{ "amount": <金额数值>, "currency": <货币符号>, "decimal_places": <小数位数>, "positive": <是否为正数>}```其中:- `<金额数值>` 是浮点数或固定小数点数,表示货币的具体金额;- `<货币符号>` 表示货币符号,如"$"或"¥";- `<小数位数>` 表示金额值的小数位数;- `<是否为正数>` 是一个布尔值,表示金额是否为正数。

gis添加字段坐标选什么类型?

1. Double类型:如果您需要高精度的坐标值,可以选择Double类型。

2. Float类型:如果您需要较高精度的坐标值,但是内存限制,可以选择Float类型。

3. Decimal类型:如果您需要极高的精度,可以选择Decimal类型,但是可能会影响性能。

4. Text类型:如果您只需要存储坐标值,但不需要进行计算,可以选择Text类型。

5. Geometry类型:如果您需要在GIS系统中对坐标进行空间分析,可以选择Geometry类型。

mysql建表时的价格用什么类型定义?

MySQL中可以用来做价格的字段一般有float、double、decimal

如定义一个money字段类型为float(9,2),则money字段最大长度为9,整数位是6位,小数位是2位。

以下摘自MySQL 5.1参考手册:

1、FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

小(单精度)浮点数。允许的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。这些是理论限制,基于IEEE标准。实际的范围根据硬件或操作系统的不同可能稍微小些。

M是小数总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。

如果指定UNSIGNED,不允许负值。

使用浮点数可能会遇到意想不到的问题,因为在MySQL中的所有计算用双精度完成。参见A.5.7节,“解决与不匹配行有关的问题”。

2、DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

普通大小(双精度)浮点数。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到 1.7976931348623157E+308。这些是理论限制,基于IEEE标准。实际的范围根据硬件或操作系统的不同可能稍微小些。

M是小数总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。双精度浮点数精确到大约15位小数位。

如果指定UNSIGNED,不允许负值。

3、DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

为DOUBLE的同义词。除了:如果SQL服务器模式包括REAL_AS_FLOAT选项,REAL是FLOAT的同义词而不是DOUBLE的同义词。

4、FLOAT(p) [UNSIGNED] [ZEROFILL]

浮点数。p表示精度(以位数表示),但MySQL只使用该值来确定是否结果列的数据类型为FLOAT或DOUBLE。如果p为从0到24,数据类型变为没有M或D值的FLOAT。如果p为从25到53,数据类型变为没有M或D值的DOUBLE。结果列范围与本节前面描述的单精度FLOAT或双精度DOUBLE数据类型相同。

FLOAT(p)语法与ODBC兼容。

5、DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

压缩的“严格”定点数。M是小数位数(精度)的总数,D是小数点(标度)后面的位数。小数点和(负数)的‘-’符号不包括在M中。如果D是0,则值没有小数点或分数部分。DECIMAL整数最大位数(M)为65。支持的十进制数的最大位数(D)是30。如果D被省略, 默认是0。如果M被省略, 默认是10。

如果指定UNSIGNED,不允许负值。

所有DECIMAL列的基本计算(+,-,*,/)用65位精度完成。

6、DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]

是DECIMAL的同义词。FIXED同义词适用于与其它服务器的兼容性。

100%属于什么类型的数据?

100%属于varchar类型的数据。

数据库里没有百分数这样的类型,表示数字的有float,decimal等类型,表示文本的有varchar,char,text等类型,如果你想存百分比的话,最好是建个float字段,把百分比计算成数值存进去,如果你非要存到库里面显示0%-100%这样的数值的话,那就用varchar类型的就可以了。