C#数学功率(-2,1.1)>;n、 def

C#数学功率(-2,1.1)>;n、 def,c#,math,type-conversion,pow,C#,Math,Type Conversion,Pow,我刚刚发现,当输入负x和十进制y时,返回未定义的值作为结果,我猜这是错误的。在其他程序中计算此值,即使像windows计算器一样,也能获得正确的结果。文件中也没有提到这种情况 目标框架是4 有人能解释一下吗?结果将是复数,因此您必须使用System.Numerics命名空间中的complex类 Complex n = new Complex(-2, 0); Complex result = Complex.Pow(n, 1.1); 如果结果是实数(整数幂),则可以使用Math.Pow 正如@J

我刚刚发现,当输入负x和十进制y时,返回未定义的值作为结果,我猜这是错误的。在其他程序中计算此值,即使像windows计算器一样,也能获得正确的结果。文件中也没有提到这种情况

目标框架是4


有人能解释一下吗?

结果将是复数,因此您必须使用
System.Numerics
命名空间中的
complex

Complex n = new Complex(-2, 0);
Complex result = Complex.Pow(n, 1.1);
如果结果是数(整数幂),则可以使用
Math.Pow

正如@JeppeStigNielsen所提到的,从
int
/
double
Complex
的转换是隐式的,因此代码可以缩短为:

Complex result = Complex.Pow(-2, 1.1);

结果将是复数,因此您必须使用
System.Numerics
命名空间中的
complex

Complex n = new Complex(-2, 0);
Complex result = Complex.Pow(n, 1.1);
如果结果是数(整数幂),则可以使用
Math.Pow

正如@JeppeStigNielsen所提到的,从
int
/
double
Complex
的转换是隐式的,因此代码可以缩短为:

Complex result = Complex.Pow(-2, 1.1);
文件中也没有提到这种情况

你确定?从它的

参数

x<0,但不具有负不确定性;y不是整数, 负不确定性,或正不确定性

返回值

我不确定您尝试了哪个操作系统,但它在calc.exe(Win7-64位)中不工作,表示输入无效

正如乌卢格贝克所说,取负值的幂产生一个复数。因为(-2)1.1=(-2)11/10=(-2)1/1011并获取
10
-2
的根返回一个复数

由于
Math.Pow
获取并返回
double
值,这不符合要求。您可以使用来自的类

进一步阅读:

文件中也没有提到这种情况

你确定?从它的

参数

x<0,但不具有负不确定性;y不是整数, 负不确定性,或正不确定性

返回值

我不确定您尝试了哪个操作系统,但它在calc.exe(Win7-64位)中不工作,表示输入无效

正如乌卢格贝克所说,取负值的幂产生一个复数。因为(-2)1.1=(-2)11/10=(-2)1/1011并获取
10
-2
的根返回一个复数

由于
Math.Pow
获取并返回
double
值,这不符合要求。您可以使用来自的类


进一步阅读:

这将是一个复杂的数字:
(-2)^1.1=-2.0386-0.6624i
。文档中如何不包括这一点?“x<0但不是NegativeInfinity;y不是整数、NegativeInfinity或PositiveInfinity。”-返回值为NaN Windows计算器工作是什么意思?它对我来说是“无效输入”。记住
X^1.1==(X^(11/10))==(X^(1/10))^11
,所以如果X是负数,你将取它的第10个根,这将产生一个乌鲁贝克表示的复数。记住在使用中缀运算符的情况下的括号,如Windows计算器。所以
(-2)^1.1
,而不仅仅是
-2^1.1
。将负值提升为非整数次幂需要选择一个分支。有不同的惯例。正如@LasseV.Karlsen所说,Windows计算器不会执行
(-2)^1.1
。但是,它将执行
(-2)^1.2
,并且它的计算方式就像
(-2)^1.2=(-2^(6/5)=(-2)^6^(1/5)=(+64^(1/5)
。所以它得到了一个真实的(不是想象的)结果。其他一些软件选择另一个分支,并为
(-2)^1.2
生成一个复数。它将是复数:
(-2)^1.1=-2.0386-0.6624i
。文档中如何不包括这一点?“x<0但不是NegativeInfinity;y不是整数、NegativeInfinity或PositiveInfinity。”-返回值为NaN Windows计算器工作是什么意思?它对我来说是“无效输入”。记住
X^1.1==(X^(11/10))==(X^(1/10))^11
,所以如果X是负数,你将取它的第10个根,这将产生一个乌鲁贝克表示的复数。记住在使用中缀运算符的情况下的括号,如Windows计算器。所以
(-2)^1.1
,而不仅仅是
-2^1.1
。将负值提升为非整数次幂需要选择一个分支。有不同的惯例。正如@LasseV.Karlsen所说,Windows计算器不会执行
(-2)^1.1
。但是,它将执行
(-2)^1.2
,并且它的计算方式就像
(-2)^1.2=(-2^(6/5)=(-2)^6^(1/5)=(+64^(1/5)
。所以它得到了一个真实的(不是想象的)结果。其他一些软件选择了另一个分支,并为
(-2)^1.2
生成一个复数。由于提到
complex.Pow
,所以得票较高。更简单地说,您可以编写
Complex.Pow(-2,1.1)
,从real
double
(或者在本例中是real
int
)到
Complex
的转换是隐式的。请注意,复杂的求幂运算需要选择一个分支。对于某些输入,如
Complex.Pow(-2,1.2)
,其结果与Windows Calculator不同,
(-2)^1.2
。对于提及
Complex.Pow
,投票结果更高。更简单地说,您可以编写
Complex.Pow(-2,1.1)
,从real
double
(或者在本例中是real
int
)到
Complex
的转换是隐式的。请注意,复杂的求幂运算需要选择一个分支。对于某些输入,如
Complex.Pow(-2,1.2)
,结果与Windows计算器
(-2)^1.2
不同。