Visual Basic 6.0中的小数

时间:2009-02-18 14:52:29

标签: vb6

我需要将45.556显示为45.55我需要在真正的dbgrid pro 7.0中使用什么格式。

5 个答案:

答案 0 :(得分:6)

抱歉不熟悉dbgird pro 7.0。如果您不希望在示例中显示6(如45.556为45.56),则可以使用format命令,该命令会将您的数字格式化为两位小数,并相应地舍入。

format(*value*, "0.00")

使用“0.00”将数字格式化为零所在位置的默认值为零 使用“#。##”将数字格式化为默认为空格(无)

如果您不想对数字进行四舍五入,只想获得数字加上正确的两位小数。

Left(cStr(value), instr(cStr(value), ".") + 2))

从左侧检索您的数字加上小数点后的2,截断其余部分。您可能不需要cStr(),因为VB可能会先显式转换它 如果你在网格中看到这个问题,使用cStr()可能会在减号之前创建一个空格,format()不会这样做。

答案 1 :(得分:1)

要通过网格属性处理此问题,请设置列的NumberFormat = Fixed,除非它是货币值,否则您应该使用Currency。

答案 2 :(得分:1)

可选地,不会导致在欧洲国家(使用a,而不是a。用于小数位)的字符串操作...但是,如果floatval和decimalPlaces的任意组合> 9你将遇到溢出问题......

Public Function Floor(ByVal floatval As Double, optional decimalPlaces as Long = 0) As Long
    Dim intval As Long
    intval = Round(floatval)
    If intval > floatval Then 
         intval = intval - 1
    End If

    if decimalPlaces > 0 then
        floatval = float / (10 ^ decimalPlaces)
    end if

    Floor = intval
End Function

答案 3 :(得分:1)

实际上你可以用两种不同的方式做到这一点,结果不同。我们将在点符号“。”后面的前两位数字。得到结果:    45.55中的45.55

Dim a As Double  'This must be DOUBLE not long
a = 45.556

MsgBox Left(a, InStr(a, ".") + 2) 'Result: 45.55

以编程方式100%正确,但从逻辑上讲,上面的结果是错误的45.556应该是45.56,因为我们想要摆脱的最后一个数字大于10中的5,这是6所以我们必须将1添加到前一个数字结果是5比6:45.56。这不是我的数学。 另一种方式将为我们提供所需数字长度的正确结果:

Dim a As Double 'This must be DOUBLE not long
a = 45.556

MsgBox Format(a, "#.##") 'Result: 45.56

之前“。”它足以使用一个#,但在“。”之后。我们将#添加为我们需要显示的位数。

答案 4 :(得分:0)

您可以使用:

fix(45.556*100)/100

45.55