gpt4 book ai didi

c# - 为什么不能将 Double 隐式转换为 Decimal

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

我不明白十进制和 double 的转换规则。

这样做是合法的

decimal dec = 10;
double doub = (double) dec;

然而让我感到困惑的是 decimal 是一个 16 字节的数据类型,而 double 是 8 字节,所以将 double 转换为 decimal 并不是一个扩大的对话,因此应该被隐含地允许;上面的例子是不允许的?

double doub = 3.2;
decimal dec = doub; // CS0029: Cannot implicitly convert type 'double' to 'decimal'

最佳答案

如果将 double 转换为 decimal,您可能会丢失信息 - 数字可能完全超出范围,因为 double 的范围code> 比 decimal 的范围大得多。

如果您将 decimal 转换为 double,您可能会丢失信息 - 例如,0.1 可以用 decimal 精确表示,但不能用 doubledecimal 实际上比 double 使用更多的位来提高精度。

隐式转换不应该丢失信息(从 longdouble 的转换可能会丢失,但这是一个不同的论点)。如果您要丢失信息,则必须通过显式转换告诉编译器您知道这一点。

这就是为什么没有隐式转换的原因。

关于c# - 为什么不能将 Double 隐式转换为 Decimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817866/

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