2014-01-23 111 views

回答

13

5/15是一個整數除法和返回0.使用5m/15m強制decimal

m是C#後綴,用於表示編譯器所寫的數字是decimal,即使它看起來像是int。您可以使用浮動的f和雙倍的d(或5.0)。

雖然關於後綴的話題,但也有Llong,但這不會幫助你的部門,因爲它也是一個整數類型。

5 // Int32 
5L // Int64 
5d // Double 
5.0 // Double 
5m // Decimal 
5f // Single 
5

您需要使用浮點除法,而不是整數除法。你可以使它成爲一個浮點數,或使用m(將其指定爲一個decimal)落後15得到正確的結果:

decimal Test = (5/15.0) * 1185; 

decimal Test = (5/15m) * 1185; 
0

5/15是0,因爲您正在使用整數除法。 您可以嘗試使用下面的代碼之一:

decimal test = (5m/15) * 1185 
decimal test = ((decimal)5/15) * 1185 
decimal test = (5.0/15) * 1185 

十進制值類型表示十進制數爲正79,228,162,514,264,337,593,543,950,335負79,228,162,514,264,337,593,543,950,335。十進制類型並不排除舍入的需要,而是將由於舍入而導致的錯誤最小化。

鏈接:http://msdn.microsoft.com/en-us/library/364x0z75

0

你也可以使用lambda表達式:

Func<decimal, decimal, decimal, decimal> exp = (x, y, z) => (x/y) * z; 
Console.WriteLine(exp(5, 15, 1185)); 

輸出: 394.999999

因爲你期待395,你將需要使用Math.Round

Console.WriteLine(Math.Round(exp(5, 15, 1185), 1)); 

ou輸入:395.0