C#小數所以我有這樣的代碼:整數運營商
p.Value = 1;
decimal avg = p.Value * 100/10000;
string prntout = p.Key + " : " + avg.ToString();
Console.WriteLine(prntout);
但該程序打印出0,而不是0.01。 p.Value是一個int。我如何解決這個問題?
C#小數所以我有這樣的代碼:整數運營商
p.Value = 1;
decimal avg = p.Value * 100/10000;
string prntout = p.Key + " : " + avg.ToString();
Console.WriteLine(prntout);
但該程序打印出0,而不是0.01。 p.Value是一個int。我如何解決這個問題?
更改文字轉換爲十進制的一個:
decimal avg = p.Value * 100m/10000;
現在,解釋爲什麼這個工程:
在同一時間讓我們處理原始行一個操作,p.Value代1:
decimal avg = 1 * 100/10000; // int multiplication
decimal avg = 100/10000; // int division, remainder tossed out
decimal avg = (decimal) 0; // implicit cast
通過改變100到100M,它現在:
decimal avg = 1 * 100m/10000; // decimal multiplication
decimal avg = 100m/10000; // decimal division
decimal avg = 0.01m;
表達式p.Value * 100/10000
僅使用整數類型,因此根據integer division規則進行評估。
更改一個(或多個)的參數,以小數的和預期它會執行:
p.Value * 100/10000m
嘗試改變這一點:
decimal avg = p.Value * 100/10000;
到
decimal avg = Convert.ToDecimal(p.Value) * 100.0/10000.0;
你以前的版本使用所有整數。
如果P.Value是你可能會失去在這條線的分數整數:
小數平均= p.Value * 100/10000;
所以,你可以這樣做:
十進制平均=(十進制)P.Value * 100/10000;
希望它有幫助。
謝謝大家的答案,它確實工作:) – webyacusa 2010-05-20 14:43:43
備註:十進制的文字類型代碼是'm',可能是爲了錢。 – Powerlord 2010-05-20 14:35:34