黑马程序员技术交流社区

标题: 关于学习中数据类型的一点困惑 [打印本页]

作者: 穆玉明    时间: 2013-6-9 14:16
标题: 关于学习中数据类型的一点困惑
本帖最后由 穆玉明 于 2013-6-9 23:18 编辑

double类型和decimal类型的转换,为什么double类型可以转换成demical类型,而decimal类型不可以转换成double类型    double类型的范围不是比demical类型范围大吗??
作者: 李奔    时间: 2013-6-9 14:52
  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区别的,很不错!
作者: 赵洋3916    时间: 2013-6-9 15:25
double类型的有效位15/16位, 而decimal 类型的精度是28位,但是表示的数据范围却比double类型小。decimal类型并不是C#中的基础类型,所以使用的时候会对计算时的性能有影响。


作者: popoluno    时间: 2013-6-9 15:34
decimal 类型表示的数据范围比double类型小,但精度上decimal却比double高
作者: 蔡志涛    时间: 2013-6-9 15:37
本帖最后由 蔡志涛 于 2013-6-9 15:38 编辑

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


作者: 李晶晶    时间: 2013-6-9 17:15

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2