圆angular值不正确地插入到Excel中

我有一个Access数据库,其中有一些数据通过vba代码转储到Excel工作簿中。 有些值有一个很长的小数,我想四舍五入到最接近的十分之一。 我不希望价值四舍五入到十分之一,如果它是一个整数(即,我不希望45四舍五入到45.0),所以我使用下面的代码:

If Fix(rstTmpRegularAndOvertimeHours!regularhours) = rstTmpRegularAndOvertimeHours!regularhours Then objWS.cells(intRowCount, 6).Value = rstTmpRegularAndOvertimeHours!regularhours Else objWS.cells(intRowCount, 6).Value = Round(rstTmpRegularAndOvertimeHours!regularhours, 1) End If 

四舍五入的值显示在单元格中,但input的实际值是未接地的值。 例如,值为4.19999980926513,运行此代码时,单元格中显示值4.2,但如果单击单元格,则会看到实际值仍为4.19999980926513。 当下面这行代码运行时:

 With objWS.PageSetup .Orientation = 2 .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 End With 

单元展开显示整个值,再次显示4.19999980926513。 我在其他地方使用类似的代码,并获得插入到电子表格中正确的四舍五入的值。 有任何想法吗?

二进制系统的十进制分数是一个挑战。

Round()返回一个双精度浮点数。 但4.2不能完全保存为双精度。 所以相反,double值是4.2的近似值 ,而且它是double值最接近的值。

那么你在Excel中看到的是实际的双重价值。 如果你想显示一个小数位—然后调整列的宽度—将Excel的列格式更改为“数字”,其中1为“小数位数”属性。