InW*_*ods 2 excel vba excel-vba
我写了下面的简单代码,从用户那里获取N1和N2的输入并将它们加起来并作为输出(N3)。 。
举个简单的例子:N1 = 25.5,N2 = 25.5正确答案= 51,但给出的答案是52。我是编程新手,所以我会感激不尽。
我希望它最多显示N3个小数点后6位,而在取输入时不舍入N1和N2的各个输入。
Sub InputVariable()
Dim N1 As Integer
Dim N2 As Integer
Dim N3 As Integer
N1 = InputBox("Enter 1st number")
N2 = InputBox("Enter 2nd number")
N3 = N1 + N2
MsgBox ("Your total is " & N3)
End Sub
Run Code Online (Sandbox Code Playgroud)
您需要使用Double数据类型。如果您使用整数类型(Integer或Long),则会将数字四舍五入,N1 = InputBox(...)因为它无法在变量中存储非整数值。
编辑:Double代表双精度(8字节)与单精度(4字节)相比。有趣的是,由于Double使用二进制数格式,因此它不能存储精确的值,例如0.1(就像十进制不能显示1/3一样,无论您拥有多少个数字)。
如果您需要使用十进制数字进行精确的计算,则Decimal可以使用以下格式。您实际上无法声明它,但可以将数字转换为十进制并将其存储在中Variant。请参阅以下示例:
Sub precisionTest()
Dim i As Long
Dim dbl As Double
Dim dblResult As Double
Dim dec As Variant
Dim decResult As Variant
dblResult = 0
decResult = 0
dbl = 0.00001
dec = CDec(0.00001)
For i = 1 To 100000
dblResult = dblResult + dbl
decResult = decResult + dec
Next i
MsgBox "Double result: " & dblResult & vbCr & "Decimal result: " & decResult
End Sub
Run Code Online (Sandbox Code Playgroud)
edit2:数字的四舍五入和格式设置:您可以使用该Format函数创建数字字符串而不更改值(仅用于显示目的)。有效格式看起来像“ 0。##”,其中0表示始终显示小数位,#如果非零则表示显示小数位:
Sub formatTest()
Dim dbl As Double
Dim dbl2 As Double
Dim dbl3 As Double
dbl = 1.234
dbl2 = 1.2
dbl3 = 0.1
MsgBox "Format(1.234,""0.##"") = " & Format(dbl, "0.##") & vbCr _
& "Format(1.234,""0.00"") = " & Format(dbl, "0.00") & vbCr _
& "Format(1.2,""0.##"") = " & Format(dbl2, "0.##") & vbCr _
& "Format(1.2,""0.00"") = " & Format(dbl2, "0.00") & vbCr _
& "Format(0.1,""#.##"") = " & Format(dbl3, "#.##") & vbCr _
& "Format(0.1,""0.00"") = " & Format(dbl3, "0.00") & vbCr
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您想四舍五入,请使用 Round(number,decimalplaces)
| 归档时间: |
|
| 查看次数: |
6591 次 |
| 最近记录: |