decimal和double的转换,有点蒙

df4354t 2015-07-14 10:49:40

static void Main(string[] args)
{
decimal d = 300.2m;
object b = d;
double dd = (double)b;
Console.WriteLine(dd);
Console.ReadKey();
}

上面,把b转换成double,为什么失败呢?
...全文
2647 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lc_ant 2015-07-14
  • 打赏
  • 举报
回复
拆箱装箱类型必须匹配
於黾 2015-07-14
  • 打赏
  • 举报
回复
你这问题根本不是decimal转double,而是中间引入了objcet 那么就完全不是一回事了
於黾 2015-07-14
  • 打赏
  • 举报
回复
object b虽然是object类型,但是你往里面装入了decimal类型之后,它其实是decimal类型了 用gettype是可以获取里面真正装入的类型的 你装入了decimal,那么就只能再转换回decimal类型,而不能直接强制转换成别的类型
moonwrite 2015-07-14
  • 打赏
  • 举报
回复
decimal d = 300.2m; //请记得d的类型 object b = d; double dd = (double)b; (类型)变量//这种转换只适合父子关系的, 一开始我是这么想的,然后发现自己想简单了 再好好想想 (类型)变量 有2中情况 一种是 引用类型的 这个时候转换只适合父子关系的 一种是 值类型 .... 你看看编译后的IL吧~
  • 打赏
  • 举报
回复
double dd = (double)((decimal)b);
需要强制转换
tcmakebest 2015-07-14
  • 打赏
  • 举报
回复
转换看似简单,实则也是有规则的,当直接从decimal 转成 double 的时候, C# 内部是有一张表记录了这种规则的, 楼主要从object转double,则要用一种方法来联接查询这张表:
decimal d = 300.2m;
object b = d;
double dd = (double)Convert.ChangeType(b, typeof(double));
exception92 2015-07-14
  • 打赏
  • 举报
回复
用Double.Parse() 方法,参数接受为string类型。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧