C# 将Double的幂乘以可为零的十进制数
我有以下资料:C# 将Double的幂乘以可为零的十进制数,c#,C#,我有以下资料: Double factor = 0.7; Decimal? value = getValue(); Decimal? = - Math.Pow(factor, 3) * value; 我得到了一个错误: Operator '*' cannot be applied to operands of type 'double' and 'decimal?' 我使用Double作为因子,因为Math.Pow只支持Double 做这个乘法的最佳选择是什么 我不能改变的是,值是一个
Double factor = 0.7;
Decimal? value = getValue();
Decimal? = - Math.Pow(factor, 3) * value;
我得到了一个错误:
Operator '*' cannot be applied to operands of type 'double' and 'decimal?'
我使用Double作为因子,因为Math.Pow只支持Double
做这个乘法的最佳选择是什么
我不能改变的是,值
是一个可为空的十进制数
,例如,十进制数?
您有几个选项
Decimal? someValue = value.HasValue ? -(decimal)Math.Pow(factor, 3) * value.Value : null;
或
请注意这些浮动点类型的适用范围。在这两种情况下,第一个小数点可以是
decimal
或decimal?
。我想这是品味的问题。你必须做明确的演员。此代码将为您提供一个十进制或空值:
Double factor = 0.7;
Decimal? value = getValue();
Decimal? d = (decimal?)(-Math.Pow(factor, 3)) * value;
第三行缺少变量名。请在调用
Math.Pow
之前检查值是否为null,如果为null,则跳过调用?您可以将Math.Pow doble转换为任意值,或将十进制转换为double。我会使用:Math.Pow(factor,3)*(double)value当你问“最佳选项”时,我们如何评估“最佳”?
Double factor = 0.7;
Decimal? value = getValue();
Decimal? d = (decimal?)(-Math.Pow(factor, 3)) * value;