VB中将文本框中的结果四舍五入到三位小数的方法是什么,例如1.0030302到1.0003
下面是结果控制按钮的代码…
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim resistivity As Double
results.Show()
resistivity = "1" / (Val(TextBox15.Text) + Val(TextBox30.Text) + Val(TextBox29.Text) + Val(TextBox28.Text) + Val(TextBox27.Text) + Val(TextBox26.Text) + Val(TextBox25.Text) + Val(TextBox24.Text) + Val(TextBox16.Text))
results.Text = Convert.ToString(resistivity)
使用Decimal.TryParse
和Match.Round
:
Dim resistivity As Decimal
Dim val1, val2, val3 As Decimal
If Decimal.TryParse(TextBox1.Text, val1) AndAlso Decimal.TryParse(TextBox2.Text, val2) AndAlso Decimal.TryParse(TextBox3.Text, val3) Then
resistivity = Math.Round(1/ (val1 + val2 + val3), 4)
End If
奇怪的问题…
基本:
results.Text = (Math.Round(resistivity * 1000) / 1000).ToString()
在TextBox15中写"blabla"怎么样?
=>你将得到一个异常,如果你不检查的地方,所有的文本框实际上包含数字…)
首先:使用数字控制
不要使用小数文本框,这是一个非常糟糕的做法。
为什么这是一个不好的做法?
- 用户可以输入字母
- 您需要自己验证小数
第二步:考虑你需要什么
根据您的需要,有三种主要的数学方法(示例包含在链接中):
轮:
Math.Round(yourNumber,4)
http://msdn.microsoft.com/en-us/library/zy06z30k.aspx 上限:
Math.Ceiling(yourNumber,4)
http://msdn.microsoft.com/en-us/library/system.math.ceiling.aspx 地板:Math.Floor(yourNumber,4)
http://msdn.microsoft.com/en-us/library/9a6a2sxy.aspx