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;