大多数编程语言都支持float或者double的数据类型。而数据库中也有相同关键字的数据类型,因此很多开发人员也自然而然地在需要浮点数的地方使用float作为字段类型。
但事实上是否float可以适用于所有的业务场景呢?
float类型是根据IEEE 754标准使用二进制格式编码实数数据,对于一些小数,比如59.95,float类型会存储了二进制中最接近59.95的值,用十进制表示等于59.950000762939。
当然,有些数据库能够通过某种方式弥补这种数据的不精确性,查询结果在时候可以输出我们所期望的值。
如下面所示:
select rate from t_refresh where id =1; Returns:59.95
但是,如果将这个值扩大十亿倍:
select rate * 1000000000 from t_refresh where id =1; Return:59950000762.939
这可能和你期望的结果59950000000.000不太一样了。
在上面在例子中,误差在千万分之一内,对于部分的运算来说已经足够了。
然而,在某些运算中,这样的误差是不能容忍的,如比较的操作:
select * from t_refresh where rate = 59.95 Result:empty set;no rows match,
因为rate的实际存储值是比59.95大一点点。
又如在金融项目中计算复利,需要进行多次浮点数乘法运算,使用float类型会导致误差不断累积。
因此,在某些业务场景中,我们需要用numeric或者decimal来代替float数据类型。
和float类型相比,numeric和decimal存储的是精确值,如果你insert进去的是一个59.95,实际存的也是59.95。
所以在上面在例子中,如果用numeric或者decimal
select rate * 1000000000 from t_refresh where id =1; Return:59950000000
select id from t_refresh where rate = 59.95 Return:1
结论:
float适用于精度要求低, 数值范围大的科学运算场景
金融、统计等精度要求高的场景,则需要用numeric或者decimal
相关推荐
1. 注意事项 2. 数据库安装 ——2.1 DB2 Express-C Version 11.1 下载 ——2.2 数据库安装步骤 ...—— 6.3 慎用【频繁的停止数据库】 7. 数据库完全卸载 —— 7.1 卸载注意事项 —— 7.2 卸载DB2数据库
"机器学习前端,没有HBase数据库结构和Scala的算法jar包,慎用"这一标题提示我们,对于一个涉及机器学习的项目,如果前端缺少了特定的后端支持,可能会遇到重大挑战。在这个场景中,HBase数据库和Scala编写的算法库...
5. **自增字段慎用**:自增字段虽然简单易用,但在分布式环境下可能会带来问题。 6. **使用定长数据类型**:相较于变长数据类型,定长类型在更新时不会引起页拆分,有利于提高查询性能。 #### 六、总结 数据库优化...
19个城市群地级市数据库更新到1990-2021年已经划分好每个城市群的dta和 ...excel中数据用回归法全部补齐,有些缺失 严重的慎用,可对照表中有效值统计,选择原始数据有效值比重高的使用。共186个变量 ,来自历年城市统
标题中的“MDB数据库...因此,“慎用”提醒用户在操作前要谨慎,确保有备份以防止不可逆的数据损失。总的来说,MDB数据库修复工具是IT专业人士在面对ACCESS数据库问题时的重要工具,但使用时需谨慎并遵循正确的流程。
---注意我用的数据库是orcl数据库--- ----建表语句 ----数据库数据 ...注意要慎用,弄不好不数据库能弄挂掉了,下载模仿写的时候一定不要写成死循环,要不自己机器还好,服务器的话。。。。嘿嘿。。
- **解释**:ENUM类型虽然可以简化数据输入,但其灵活性较低,不建议在业务场景中使用。 7. **尽可能把所有列定义为NOT NULL** - **解释**:NULL值可能会导致查询和计算变得复杂,尽可能避免使用NULL值可以简化...
- **数据隔离**:不同类型的键可以分布在不同的数据库中,比如一个数据库用于存储用户信息,另一个数据库用于存储商品数据。 - **测试与生产环境**:开发环境中可以使用非0数据库进行测试,避免影响生产数据。 - ...
加密的惨剧!慎用文件夹加密软件! 加密的惨剧!慎用文件夹加密软件!
3. **IN与NOT IN的慎用**:对于非连续的数值集合,IN与NOT IN可能导致全表扫描。对于连续数值,推荐使用BETWEEN代替IN。 4. **LIKE操作符的限制**:使用LIKE操作符时,如果模式前缀为通配符(如'%abc%'),将导致全...
在实际的数据库管理工作中,删除操作要慎之又慎,确保在充分评估和准备的情况下进行。 最后,数据库的恢复是面对数据丢失或损坏情况下的重要补救措施。作业中提到的恢复操作,是利用先前的备份文件,将数据库中的...
14. 并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL 查询可能不会去利用索引。 15. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了...
"SQL Server数据库性能优化" SQL Server数据库性能的优化是数据库应用系统开发中的一个重要...合理的数据库设计、慎用游标、索引的使用、查询优化、数据库碎片整理、数据库备份和恢复等都是数据库性能优化的重要手段。
把要删除的文件拖到这个文件上面即可。注意,这是强力删除。一定慎用,因为连垃圾箱都会没有的。
在数据库设计中,尽量避免使用NULL值,特别是在where子句中对字段进行NULL值判断。这样可以避免引擎放弃使用索引而进行全表扫描。可以使用NOT NULL约束来确保字段不为空。 三、避免使用!=或操作符 在where子句中,...
- **注意数据类型匹配**:连接操作时,确保数据类型匹配,避免隐式转换带来的性能损失。 - **慎用视图**:虽然视图方便了查询,但过度使用可能导致性能下降,尤其是复杂视图。 - **避免DISTINCT和ORDER BY**:...
数据字典(Data Dictionary,简记 DD),是对数据流程图中数据流和存储结构的描述。在数据库应用系统设计中,数据字典是表、视图设计的主要依据。 七、需求分析阶段的主要任务和目的 需求分析阶段的主要目的是回答...
* 自增字段要慎用,不利于数据迁移。 数据库物理存储和环境的设计 在设计阶段,可以对数据库的物理存储、操作系统环境、网络环境进行必要的设计,使得我们的系统在将来能适应比较多的用户并发和比较大的数据量。...