我試圖做到以下幾點:爲什麼,即:10 ^((77-109)/ 32),在Silverlight C#中不起作用?
10^((77-109)/32) = 0,1
在C#:
MessageBox.Show((Math.Pow((((77-109)/ 32)), 10)).ToString());
輸出:
1
這是怎麼回事?我怎樣才能得到正確的答案?
我試圖做到以下幾點:爲什麼,即:10 ^((77-109)/ 32),在Silverlight C#中不起作用?
10^((77-109)/32) = 0,1
在C#:
MessageBox.Show((Math.Pow((((77-109)/ 32)), 10)).ToString());
輸出:
1
這是怎麼回事?我怎樣才能得到正確的答案?
您正在使用導致C#使用整數算術的所有整數操作數;
(88-109)/ 32 =(四捨五入到)0,0^10 = 0(這是你的代碼行會顯示什麼,而不是1)
的正確路線,以獲得結果你想在你的問題的頂部是;
MessageBox.Show((Math.Pow(10.0, (77.0 - 109.0)/32.0)).ToString());
哪個正確地顯示0.1。注意十進制數而不是整數的變化,以及(錯誤的)x^10
到10^x
的交換。
迂腐我知道。但更多的是使用整數算術,而不是使用整數操作數。顯然,所有的整數操作數都會導致ineger分割。 –
@DavidHeffernan同意,澄清。 –
我很抱歉造成不便,我的剪貼板搞砸了。 感謝您的代碼,工作。我試圖Math.Pow多個雙打,所以當我嘗試88時,它又錯了。將其更改爲88.0 :)。 – Niels
您已將Math.pow
;您的代碼將(88-109)/32
提升至10的冪次,結果,您將收到意想不到的結果。交換參數(並糾正88到77)將給你預期的結果0.1
,因爲它然後將評估10^-1
。
MessageBox.Show((Math.Pow(10, (77 - 109)/32)).ToString());
你給出的代碼將打印0,而不是1 ... –
你的問題是不一致的;你想做77-109,還是88-109? – Vulcan
我改正了你的問題。不要發佈虛假代碼。發佈真實的代碼。使用剪貼板。你希望我們關心你的問題。告訴我們你也很關心正確的問題。 –