2015-10-06 80 views
1

今天我想知道在vb.net的Math.Round()中使用了什麼Math方法。我有下面的代碼,我不知道爲什麼程序給出了相同的結果。任何人都可以向我解釋這個嗎?如何使用Math.Round()?

Module Module1  
    Sub Main() 
     Console.WriteLine("Math.Round" & Math.Round(23.5)) 
     Console.WriteLine("Math.Round" & Math.Round(24.5)) 
     Console.ReadLine()  
    End Sub  
End Module 
+0

如果你想確保0.5回合,你可以使用一個樓招:'Math.Floor(X + 0.5 )'總是將'x'四捨五入到最接近的整數。 – CompuChip

+1

@CompuChip或者你可以使用[Math.Round'重載,允許你指定一個'MidpointRounding'](https://msdn.microsoft.com/en-us/library/ms131274.aspx),使它很明顯你的意思。 – AakashM

+0

通常程序會給出相同的結果。我不知道怎麼回事? –

回答

2

中點值舍入到最接近的偶數。

變化24.524.51

Console.WriteLine("Math.Round" & Math.Round(23.5)) 
    Console.WriteLine("Math.Round" & Math.Round(24.51)) 

並查看結果

區別Math.Round24

Math.Round25

+1

這不就是答案的解釋嗎? – CompuChip

+0

@ un-lucky:請仔細閱讀問題,然後仔細閱讀答案。 – DarkKnight

+0

爲什麼Math.Round(23.5)不給結果23但結果給了24? –

0

由於MSDN說明了Math.Round方法:

返回值 類型:System.Decimal

最近的參數d的整數。如果d的小數部分在兩個整數之間,其中一個是偶數,另一個是奇數,則返回偶數。請注意,此方法返回一個十進制而不是整數類型。

+0

非常感謝你 –

0

您可以使用Math.Round作爲任何值。下面的例子只是一個值

Dim Value1 as string = Math.Round(Convert.ToDecimal(24.51), 2) 
Console.WriteLine("Math.Round" & Value1) 

結果: 25.00

+0

非常感謝。 –

+0

您的歡迎兄弟 – Developer