[英]How do I write 10 raised to 9 (10^9) in an if-statement not using Math.Pow? C#
[英]How wrong do I use Math.Pow(a,b) function in this C# code?
我找不到以下代碼有什么問題,MSVC#編譯器將NAN存儲在“ c”中:
double c = Math.Pow(-8d, 1d / 3d);
雖然我認為這一行應該為“ c”計算-2,但是編譯器將NAN存儲在“ c”中? 我有什么錯嗎?
僅針對正基數或整數指數定義浮點數的冪函數。 嘗試
double c = - Math.Pow(8d, 1d / 3d);
實際上,1/3不能完全表示為浮點數,但需要四舍五入。 在理論上,甚至沒有關於舍入指數的確切實際結果。
通常,人們不會說(-8)^(1/3)= -2。
的確是(-2)^ 3 = -8,但是負數的冪是一件復雜的事情。
您可以在Wikipedia上閱讀有關該問題的更多信息:
對數方法和有理指數方法都不能用於將a ^ r定義為負實數a和任意實數r的實數。 實際上,對於每個實數r,er都是正數,因此ln(a)並未定義為a≤0的實數。(另一方面,可以通過選擇n的復數來定義負數a的任意復數冪。一種。)
簡而言之,在數學上很難正確定義a ^ r的值,當a為負數時,以免一個人開始使用復數,因此,一般而言,應該避免嘗試這樣做。
答案是一個復數: 1.0+1.732050807568877i
。 .NET的Math類不支持復數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.