为什么四舍五入到 1 位的数字仍然写入具有许多位数的 Excel。
例如:
dim myvar as variant
dim mysingle as single
dim myrange as range
mysingle = 4567.23494376
myvar = round(mysingle,1)
myrange = "A1"
myrange.value = myvar
即使我正在写myvar
已经四舍五入到单元格 A1 的一位数字,尽管单元格显示 4567.2,但单击单元格会显示整个值,所有数字都在编辑栏中尾数的右侧。
我应该期待这种行为吗?
尝试myvar = WorksheetFunction.Round(mysingle, 1)
而不是myvar = round(mysingle,1)
另请参阅@YowE3K提供的以下信息
WorksheetFunction.Round
总是返回一个类型为 Variant/Double
的值,而 Round
返回一个与input parameter
类型相同的值(在本例中为 Single
(。
使用单打几乎总是一个坏主意 - Excel 使用双打 - 将单打转换为双打会导致麻烦 - 此代码按您对双打的预期工作,但用单打给出意外的答案,而不涉及 Round
Sub roundit()
Dim myvar As Variant
Dim myDouble As Double
Dim mySingle As Single
myDouble = 4567.23494376
mySingle = 4567.2
myvar = Round(myDouble, 1)
Range("a1").Value = myvar
Range("a2").Value = mySingle
End Sub