关于金额,重量等浮点数的数据库字段设计(用Int,Long代替浮点数计算)
金额、重量、成绩等数据库字段推荐使用int或bigint类型。
通常我们数据库设计中金额,重量等涉及到小数位的字段会用float或decimal,mysql还可以用double,但往往每笔金额的计算我们只需要精确到分,重量精确到克,最佳的设计是用int型来代替浮点型,如果涉及到的数字比较大,超过int型的取值范围(-2,147,483,648~2,147,483,647),最大金额为21474836.47,即两千多万,或者2147483.647公斤,哪么我们可以用bigint,c#中使用long类型(9,223,372,036,854,775,808~9,223,372,036,854,775,807),最大金额92233720368547758.07,亿亿级,国家财政收入也就万亿,所以一般足够用了,如果都是正数,还可以用ulong,设想一下,如果超过ulong型该怎么处理,大家可以思考一下?
使用int型来代替浮点数的好处是计算速度上int型要快很多,居于快多少与数量级有关,但以现在的计算机计算能力,一般系统大可忽略这个影响;使用int最大的好处是解决计算精度的问题,在涉及N条记录合计取整时浮点数会有偏差,在数据加减处理上也比较麻烦,举个例子:某个客户账户数据库余额123.2301元,我们在界面显示的时候只需要显示123.23元,如果客户消费123.23元,实际余额为0,但数据库中还有0.0001元,这样我们需要在代码中处理这多余的0.0001元,有些人会说写入时就把精度四舍五入处理好,但依然会涉及到精度处理以及与合计金额的偏差处理(多条记录四舍五入后与实际合计金额会有偏差),如果使用int型代替浮点型,输入时我们只要做一个格式化处理就可以。
关于金额,重量等浮点数的数据库字段设计(用Int,Long代替浮点数计算)的更多相关文章
- mysql数据库设计文档-导出字段设计
navicat 是我一直在使用的一个数据库操作工具,非常方便快捷.如果没有可用navicat可以留言邮箱我直接发您. 今天来介绍一下使用navicat导出数据库字段设计.废话不多说,先看导出效果. 查 ...
- MySQL数据库一般设计规则
一.数据库设计 规则一之存储规则: 一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所 ...
- Django数据模型——数据库字段类型
字段 一个模型最重要也是唯一必需的部分,是它定义的数据库字段 字段名称限制 1.字段名不能是python保留字,这样会导致python语法错误 2.字段不能包含连续一个以上的下划线,这样会和Djang ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- ORACLE常用数据库字段类型
ORACLE常用数据库字段类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度 ...
- SQL Server数据库字段类型说明
SQL Server数据库字段类型说明 目前Sql Server 数据库一共有X个字段类型,大体分为9类,分别是字符串类型.二进制码字符串数据类型.Unincode字符串数据.整数类型.精确数据类型. ...
- Oracle开发:常用的数据库字段类型[转]
Oracle常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes ...
- Oracle数据库字段保留3位小数,程序读出来显示4位小数
需求 项目需求从字段2位小数,改成3位小数,这事儿好办,数据库噼里啪啦敲了一行代码,发现居然报错,原因是不能修改字段精度问题,然后使用了冒泡排序,搞定 --新增临时字段 ,); --将原字段内容拷贝至 ...
- 设计数据库字段或者java中使用boolean型时需谨慎
boolean型变量只有两个值 false和true,我们在设计数据库字段时或者定义java变量时会使用boolean,通常情况下开关类的变量使用无可非议,但请一定要考虑到扩展性. 使用前请仔细考虑一 ...
随机推荐
- linux dmesg命令
linux dmesg命令详解 功能说明:显示开机信息. 语 法:dmesg [-cn][-s ] 补充说明:kernel会将开机信息存储在ring buffer,若是开机时来不及查看信息,可利用 ...
- java sni support result in svn fail
svn: E175002: handshake alert: unrecognized_name http://stackoverflow.com/questions/7615645/ssl-han ...
- iOS之tabbar图片去除渲染以及字体颜色统一配置
转发:http://www.cnblogs.com/qianLL/p/5521228.html 方式一 代码实现 这种要写很多代码 ,每个控制器都要写 UIImage *image=[UII ...
- android脚步---使用framelayout实现霓虹灯效果
轮换帧布局中7个TextView的背景颜色,会出现上面颜色渐变不断变换. 首先在main.xml文件中进行布局 总体布局为framelayout 中间有7个Textview,代表7种不同的颜色,可以看 ...
- Android5.1图库Gallery2代码分析数据加载流程
图片数据加载流程. Gallery---->GalleryActivity------>AlbumSetPage------->AlbumPage--------->Photo ...
- Object.defineproperty实现数据和视图的联动 ------是不是就是 Angular 模型和视图的同步的实现方式???
参考:http://www.cnblogs.com/oceanxing/p/3938443.html https://developer.mozilla.org/zh-CN/docs/Web/Java ...
- 高效PHP编程
1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非静 ...
- openstack controller ha测试环境搭建记录(六)——配置keystone
在所有节点的hosts文件添加:10.0.0.10 myvip 在所有节点安装# yum install -y openstack-keystone python-keystoneclient# yu ...
- CodeForces 621A Wet Shark and Odd and Even
水题 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #inclu ...
- aspx界面中,怎么调用后台的方法,处理某个数据
<%# GetUrl(Eval("Url").ToString(),Eval("ID").ToString()) %> GetUrl() 就是后台的 ...