A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 穆玉明 中级黑马   /  2013-6-9 14:16  /  1960 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 穆玉明 于 2013-6-9 23:18 编辑

double类型和decimal类型的转换,为什么double类型可以转换成demical类型,而decimal类型不可以转换成double类型    double类型的范围不是比demical类型范围大吗??

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

6 个回复

倒序浏览
  1. double b = 2.000867;
  2.             decimal c = 5.88788676M;
  3.             //c = b;        //不能显示转换
  4.             c = (decimal)b; //隐式转换,把double类型的转换成decimal类型
  5.             //b = c;        //不能显示转换
  6.             b = (double)c;  //隐式转换,把decimal类型的转换成double类型
  7.             //b =(double)c;
  8.             //c = (decimal)b;

  9.             Console.WriteLine("c={0},b={1}",c,b);
  10.             Console.ReadKey();
复制代码
我得出的结论是double类型与decimal类型可以相互转换,只不过必须是显示转换。
另外double类型虽然表示的范围比decimal大,但精度没有decimal高。
这是个人的理解,不知正确如否?
给你推荐一篇文章吧!http://www.cnblogs.com/yellowapplemylove/archive/2011/08/23/2150316.html
关于decimal,float和double区别的,很不错!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
double类型的有效位15/16位, 而decimal 类型的精度是28位,但是表示的数据范围却比double类型小。decimal类型并不是C#中的基础类型,所以使用的时候会对计算时的性能有影响。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
decimal 类型表示的数据范围比double类型小,但精度上decimal却比double高

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 蔡志涛 于 2013-6-9 15:38 编辑

这两种数据一般是不相互转换的,因为容易丢失精度,尤其是大数据,decimal的精度比double要高,但是decimal的范围比double要小。decimal一般用于存储表示金钱的数。这里是msdn 中对这两种数据类型的介绍:

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报

double类型的范围是比decimal类型的范围大,但是它没有decimal的精度高,如果直接转换的话可能会丢失精度,这个系统是不会直接给你转换的,所以就需要程序员强制转换。而decimal由于精度比较高,所以存储金钱的时候一般选decimal而不推荐选int。。。这是我的理解  希望能帮到你。。。。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
精度的问题。。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马