2012-06-15 34 views
3

我不想在我的代碼中使用舊的Visual Basic方法,並且對於與舊的CInt()Visual Basic方法相對應的最新VB.NET方法,我感到困惑。對應於舊CInt()VB方法的VB.NET方法是什麼?

例如,

Dim n1 as Double : n1 = CInt(2.1111111) 'Gets only 2 without rounding it 
Dim n2 as Double : n2 = CInt(2.7777777) 'Get only 2 without rounding it 
+0

我不想四捨五入值,但只能將它的十進制值截斷爲CInt()方法。 – Max

+2

VB6中的CInt也執行四捨五入 - 請參閱:http://www.chennaiiq.com/developers/reference/visual_basic/functions/cint.asp –

回答

8

可以在VB.NET使用CInt爲好。它是由VB.NET編譯器支持的標準type conversion function。沒有理由避免它。

但是,幾乎所有類型的轉換操作都會將輪到到最近的整數(包括其他方法如Convert.ToInt32等),而不是截斷。您可以使用Int or Fix(對負數具有不同的行爲)強制截斷。

請注意,如果您希望避免使用VB.NET特定的轉換例程,則可以使用Math.TruncateMath.Floor與Int/Fix相同。


在旁註 - CInt in Visual Basic 6.0也執行舍入。在VB.NET中CInt的行爲與Visual Basic 6.0中的行爲相同。

+0

+1只需使用CInt。 [沒有理由避免它](http://stackoverflow.com/questions/226517/is-the-microsoft-visualbasic-namespace-true-net-code)。它是[完全支持的] .Net框架的一部分(http://msdn.microsoft.com/en-us/library/aa289509.aspx#vbtchmicrosoftvisualbasicnetinternalsanchor4)。使用CInt,繼續前進,並完成一些實際的工作。 – MarkJ

+1

@MarkJ我同意 - 如果您打算使用Visual Basic編寫代碼,那麼您可以使用該語言提供的工具。這有點像說「我想避免在C#中使用int,並且總是寫'System.Int32',因爲這就是框架定義它的方式......」 –

+0

啊,你的回答總比我的好。你通常是。 ;-) – David

相關問題