舍入变体

为什么一个数字四舍五入到一位数字仍然写入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/Doubletypes的值,而Round返回与input parameter相同types的值(在本例中为Single )。

使用单打几乎总是一个坏主意 – Excel使用双打 – 转换单打双打导致麻烦 – 这个代码的作品,你期望的双,但给你一个单一的意想不到的答案,而不涉及圆

  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