相关疑难解决方法(0)

为什么不能将Double隐式强制转换为Decimal

我不理解十进制和双精度的铸造规则.

这样做是合法的

decimal dec = 10;
double doub = (double) dec;
Run Code Online (Sandbox Code Playgroud)

然而令我困惑的是,十进制是一个16字节的数据类型,double是8个字节,因此不会将一个双倍的十进制数转换为加宽的对话,因此应该隐式允许; 以上例子不允许?

c# types casting

28
推荐指数
1
解决办法
9248
查看次数

将double转换为十进制或从double构造"new"小数更好吗?

当从一个双精度变为十进制时,假设我double 可以表示为decimal...

它是更合适的投双为十进制:
(显式数值转换表)(请注意,此项错误地违背了前者!)

double foo = bar;
decimal foobar = (decimal)foo;
Run Code Online (Sandbox Code Playgroud)

或者更适合调用decimal构造函数:
(Decimal Constructor)

double foo = bar;
decimal foobar = new decimal(foo);
Run Code Online (Sandbox Code Playgroud)

我倾向于使用decimal构造函数,但我想知道使用一个与另一个的原因.

从我可以告诉我唯一的区别是,下面的双重显式转换Decimal.MinValue返回零,而使用构造函数抛出一个OverflowException

编辑: @Joren在下面的评论中指出,演员OverflowException也会抛出一个小值...所以显然MSDN文档是不正确的.

相关问题:
- C#将双变量强制转换为十进制
- 安全地自动从双精度转换为十进制:以下是否安全?

.net c# double casting decimal

27
推荐指数
3
解决办法
8260
查看次数

标签 统计

c# ×2

casting ×2

.net ×1

decimal ×1

double ×1

types ×1