社区
C#
帖子详情
谁给说说decimal,double,single的区别,在什么时候用它们是最合适的?
crazystudio
2005-05-14 08:27:33
如上!
...全文
6117
20
打赏
收藏
谁给说说decimal,double,single的区别,在什么时候用它们是最合适的?
如上!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Ivony
2005-05-15
打赏
举报
回复
再精确计算中使用浮点数是非常危险的,尽管C#在浮点数运算时采取了很多措施使得浮点数运算的结果看起来是非常正常的。但实际上如果不清楚浮点数的特性而贸然使用的话,将造成非常严重的隐患。
考虑下面的语句:
double dd = 10000000000000000000000d;
dd += 1;
Console.WriteLine ( "{0:G50}", dd );
输出是什么?谁知道?
输出是:1000000000000000000000000
这就是浮点数精度损失的问题,最重要的是,在精度损失的时候,不会报告任何的错误,也不会有任何的异常产生。
浮点数的精度损失可能在很多地方出现,例如d * g / g 不一定等于d,d / g * g也不一定等于d。
还有两个非常危险的错误认识!!
1、decimal不是浮点型、decimal不存在精度损失。
下面有段程序大家可以去看看结果是什么。记住!所有的浮点型变量都存在精度损失的问题,而decimal是一个不折不扣的浮点型,不论它精度有多高,精度损失依然存在!
decimal dd = 10000000000000000000000000000m;
dd += 0.1m;
Console.WriteLine ( "{0:G50}", dd );
2、decimal所能储存的数比double大,从double到decimal的类型转换不会出现任何问题。
微软在decimal的帮助上真的要好好反省了。实际上只有从整形到decimal的转换才是扩大转换,decimal的精度比double大,但所能储存的最大数却比double要小。
凨叔
2005-05-15
打赏
举报
回复
晕,是我没学好……
fanruinet
2005-05-15
打赏
举报
回复
汗,正好少说了一半
应该decimal占16个字节,double-8个字节,single-4个字节
fanruinet
2005-05-15
打赏
举报
回复
to sunjian_qi(sonne):
速马没有说错,他说的大小是存储的大小,decimal占8个字节,double-4个字节,single2个字节
凨叔
2005-05-15
打赏
举报
回复
显示有问题我写的是负号,变成了−,用了Server.HtmlEncode???
凨叔
2005-05-15
打赏
举报
回复
纠正速马老大一个错误,应该是decimal的精度是double的两倍,float(single)的四倍吧。:)
就大小而言,decimal还不及float吧
类型 大致范围 精度
----------------------------------------------------------------
float ±1.5 × 10^(−45) 到 ±3.4 × 10^38 7 位
double ±5.0 × 10^(−324) 到 ±1.7 × 10^308 15 到 16 位
decimal ±1.0 × 10^(−28) 到 ±7.9 × 10^28 28 到 29 位有效位
凨叔
2005-05-15
打赏
举报
回复
纠正速马老大一个错误,应该是decimal的精度是double的两倍,float(single)的四倍吧。:)
就大小而言,decimal还不及float吧
类型 大致范围 精度
----------------------------------------------------------------
float ±1.5 × 10^−45 到 ±3.4 × 10^38 7 位
double ±5.0 × 10^−324 到 ±1.7 × 10^308 15 到 16 位
decimal ±1.0 × 10^−28 到 ±7.9 × 10^28 28 到 29 位有效位
coolsunwind
2005-05-14
打赏
举报
回复
学习!
zeusvenus
2005-05-14
打赏
举报
回复
还应该注意三者带来的系统开销相差比较大。
速马
2005-05-14
打赏
举报
回复
decimal的大小是double的两倍,float(single)的四倍
decimal的精度是可变的,其他两个不是
double和float是primitive类型,decimal不是
silentwins
2005-05-14
打赏
举报
回复
最主要是看情况和你估计数字的精度啦
精度超高当然double啦,连一点性能都要榨取的话,那就....
一般都用decimal,用于一般生活的都有足够的精度和方便
jedliu
2005-05-14
打赏
举报
回复
decimal由于更精确,所以一般用于财务和货币计算,并且在数据库里也有它,这样统一起来比较比double好。double适合一般的计算,比如统计成绩什么的。single本人用的比较少,所以没什么好的经验给你
凨叔
2005-05-14
打赏
举报
回复
不客气
新鲜鱼排
2005-05-14
打赏
举报
回复
上网搜索一下就都有了。
fanruinet
2005-05-14
打赏
举报
回复
不客气
crazystudio
2005-05-14
打赏
举报
回复
好,谢谢 fancyf(Fancyray) sunjian_qi(sonne) !
fanruinet
2005-05-14
打赏
举报
回复
任何需要浮点数的场合
精度要求不高就用single,反之double
crazystudio
2005-05-14
打赏
举报
回复
哪double和single主要用于什么场合?
凨叔
2005-05-14
打赏
举报
回复
decimal 表示 128 位数据类型。同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。
fanruinet
2005-05-14
打赏
举报
回复
double是64位的,比single-32位精度高
decimal128位高精度浮点数,常用于金融运算,不会出现浮点数计算的误差
MySQL 数据类型和运算符
Re: MySQL 数据类型和运算符=============================# 数据类型 整数类型:五种 TINY SMALL MEDIUM INT BIG 浮点和定点小数类型:三种 FLOAT
DOUBLE
DECIMAL
日期与时间数据类型:五种 YEAR -1 字符串类型:二种 CHAR(M) VARCHAR(M) -1 二进制字符串:位字段BIT 固定BINARY 可变VARBINARY -1 # 运算符 算术 运算符 比较 运算符 逻辑 运算符 位操作 运算符 运算符的优先级-------------------------------------
asp代码ASP家教信息管理系统(源代码+论文)
asp代码ASP家教信息管理系统(源代码+论文)本资源系百度网盘分享地址
基于ssm高校毕业选题管理系统.zip
基于ssm高校毕业选题管理系统.zip
基于旷视研究院领先的深度学习算法,提供满足多业务场景的预训练模型.zip
人工智能毕业设计&课程设计
tensorflow_model_optimization-0.1.3.dev0-py2.py3-none-any.whl
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
C#
110,502
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章