对变体进行舍入



为什么四舍五入到 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

相关内容

  • 没有找到相关文章

最新更新