gpt4 book ai didi

c# - 将 double 转换为 decimal 还是从 double 构造 "new"decimal 更好?

转载 作者:IT王子 更新时间:2023-10-29 04:16:37 24 4
gpt4 key购买 nike

当从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com