双精度为:15-16位数.
十进制精度是:28-29有效位数.
因此,我们可以将十进制转换为双implicitly.But,考虑以下代码:
double x = 100.3;
decimal y = 10.2;
x = y;
y = x;x=y和y=x都存在编译时错误。
为什么我们不能隐式地将十进制转换为双小数或双小数化?
请阅读:双倍到十进制,十进制到双
发布于 2013-08-11 09:38:36
这两种类型之间的想法完全不同。请看埃里克·利珀特的博客。
编辑:
博文引用:“由于范围差异,不可能有从双小数点到小数点的隐式转换;大量的双数比最大的小数点还要大,因此隐式转换要么必须抛出,要么默默地丢失,这两者都是不可接受的。从十进制到双数的隐式转换可能只会失去精度,而不是大小。”
发布于 2013-08-11 09:36:22
因为虽然decimal的精度较高,但倍频的范围更大。
double从-1.79769313486232E+308到1.79769313486232E+308。同时,decimal从-79228162514264337593543950335到79228162514264337593543950335。有一个巨大的差异。但是,您通常不希望从decimal转换为double,因为当您使用decimal时,通常不希望失去精度(因为它们通常用于银行业务,这需要精确)。
https://stackoverflow.com/questions/18170555
复制相似问题