不知道是否有这样的函数, 你可以按照这个思路来写一个函数也可以实现: val 为一个小数 inttemp 为一个整形变量 inttemp=int(val) if inttemp*10 <val*10 then inttemp=inttemp+1 endif inttemp 就是所求的值
Function allin(i As Single) Dim a As Single a = -i allin = -Int(a) End Function Private Sub Command1_Click() Dim a As Single a = Trim(Text1.Text) Print Round(allin(a)) End Sub 原理把数先变成负数,再取整,然后再变回来就成了
Function IntUp(i as single) if int(i)=i then IntUP=i else IntUP=int(i)+1 endif end function 首先判别是否为整数,如果是即为该值;否则取整后加1
看来搂主并不想四舍五入就想取整数,并且想在原先的整数位加一 因为搂主的其中一个例子是:如a=1.1,变成2 看看这个怎么样 Public Function Int2(Data As String) As Long Dim X() As String, XLen As Long X = Split(Data, ".") On Error GoTo OneLen XLen = UBound(X) If Int(X(XLen)) <> 0 Then Int2 = Int(X(LBound(X))) + 1 Else Int2 = Int(X(LBound(X))) End If Exit Function OneLen: Int2 = Int(X(LBound(X))) End Function
你可以按照这个思路来写一个函数也可以实现:
val 为一个小数
inttemp 为一个整形变量
inttemp=int(val)
if inttemp*10 <val*10 then
inttemp=inttemp+1
endif
inttemp 就是所求的值
Dim a As Single
a = -i
allin = -Int(a)
End Function
Private Sub Command1_Click()
Dim a As Single
a = Trim(Text1.Text)
Print Round(allin(a))
End Sub
原理把数先变成负数,再取整,然后再变回来就成了
danielinbiti(金)的方法是比较好的,我的思路中存在着缺陷当小数为11。001 或者是小数点后有两位或更多位的时候并且小数点后第一位为零的时候就不行了,除非val*1000或者乘以更大的参数。还是danielinbiti(金)的方法比较好。
if int(i)=i then
IntUP=i
else
IntUP=int(i)+1
endif
end function
首先判别是否为整数,如果是即为该值;否则取整后加1
因为搂主的其中一个例子是:如a=1.1,变成2
看看这个怎么样
Public Function Int2(Data As String) As Long
Dim X() As String, XLen As Long
X = Split(Data, ".")
On Error GoTo OneLen
XLen = UBound(X)
If Int(X(XLen)) <> 0 Then
Int2 = Int(X(LBound(X))) + 1
Else
Int2 = Int(X(LBound(X)))
End If
Exit Function
OneLen:
Int2 = Int(X(LBound(X)))
End Function
机子上没装MSDN,自己查一下看。
-(int(-a))
就可以了
用我的方案:
-(int(-2))还是等于2
-(int(-2.1))却等于3
本示例说明 Int 及 Fix 函数在返回某数值的整数部分时有何不同。当参数为负数时,Int 函数返回小于或等于该参数之最大整数,而 Fix 函数则返回大于或等于该参数之最小整数。Dim MyNumber
MyNumber = Int(99.8) ' 返回 99。
MyNumber = Fix(99.2) ' 返回 99。MyNumber = Int(-99.8) ' 返回 -100。
MyNumber = Fix(-99.8) ' 返回 -99。MyNumber = Int(-99.2) ' 返回 -100。
MyNumber = Fix(-99.2) ' 返回 -99。
引自MSDN
但如果这数是负数呢?
我想还是用简单点的方法好
if a1>int(a1) then a1=a1+1
if a1<int(a1) then a1=a1-1