当从 double 转换为小数时,假设我的double
可以表示为decimal
...
将 double 转换为小数是否更合适:
( Explicit Numeric Conversions Table )(请注意,此条目错误地与前者相矛盾!)
double foo = bar;
decimal foobar = (decimal)foo;
还是调用decimal
构造函数更合适:
( Decimal Constructor )
double foo = bar;
decimal foobar = new decimal(foo);
我倾向于使用 decimal
构造函数,但我想知道使用其中一个与另一个的原因。
据我所知,唯一的区别是 Decimal.MinValue
下面的 double 的显式转换返回零,而使用构造函数会抛出 OverflowException
罢工>
编辑:@Joren 在下面的评论中指出,对于较小的值,转换也会抛出 OverflowException
......所以显然 MSDN 文档是不正确的。
相关问题:
- C# cast a double variable to decimal
- Automatically cast from double to decimal safely: Is the following safe?
最佳答案
真的没有区别。使用 ILSpy:
// decimal
public static explicit operator decimal(double value)
{
return new decimal(value);
}
基于使用 LINQPad 检查 IL,运算符重载在 C# 中的已检查和未检查上下文中的调用方式相同。
在 Visual Basic 中,CDec([double]) 和 CType([double],Decimal) 直接调用构造函数,因此在这方面没有区别,但转换更能够参与编译时常量折叠比构造函数。
关于c# - 将 double 转换为 decimal 还是从 double 构造 "new"decimal 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8248662/