我需要将45.556显示为45.55我需要在真正的dbgrid pro 7.0中使用什么格式。
答案 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