Office中国论坛/Access中国论坛

标题: 有分就进到角的函数是什么呀,不是四舍五入(如2.22保留为2.3) [打印本页]

作者: jicheng    时间: 2006-7-13 17:20
标题: 有分就进到角的函数是什么呀,不是四舍五入(如2.22保留为2.3)
见分进角的函数是什么呀

如2.22保留为2.3

12.11 保留为12.2

12.89  保留为12.9

反正有1分也进到角,不是四舍五入

[此贴子已经被作者于2006-7-13 11:04:20编辑过]


作者: jicheng    时间: 2006-7-13 22:36
有知道的吗
作者: andymark    时间: 2006-7-14 01:32
Function FixJiao(Mydata As Variant) As Variant
'================================================

'逢分进角
'用法:Fixjiao(200.33)
' andymark
' 2006-7-13
'==================================================
Dim IntFen As Integer
Dim IntJiao As Integer
Dim IntYuan As Integer
IntYuan = Fix(Mydata)

IntJiao = Int((Mydata - IntYuan) * 10)

IntFen = Int((Mydata - IntYuan - IntJiao / 10) * 100)

If IntFen > 0 Then
   FixJiao = IntYuan + (IntJiao + 1) / 10
  Else
  FixJiao = IntYuan + IntJiao / 10
End If

End Function

作者: jicheng    时间: 2006-7-14 05:16
还是版主OK

最好再加个自动取保留位数的,如见角进元,像FixJiao(mydate,2) 为见厘进分,


作者: andymark    时间: 2006-7-14 05:45
以下是引用jicheng在2006-7-13 21:16:00的发言:


还是版主OK

最好再加个自动取保留位数的,如见角进元,像FixJiao(mydate,2) 为见厘进分,



     原理都一样的,你先试试写写,这样对你也有帮助
作者: jicheng    时间: 2006-7-14 06:27
我就是不理解关系,这也是网上看到的四舍五入函数,但要换成只要有小数就进位,不知改哪个数字?

Function myRound(Number As Double, N As Integer) As String
    myRound = Format(Int(Number * (10 ^ N) + 0.5) / (10 ^ N), "0." & String(N, "0"))
End Function
是不是改0.5?请版主帮帮忙吧


作者: tz-chf    时间: 2006-7-14 06:38
加5分再四舍五入,很常用的方法嘛。
作者: andymark    时间: 2006-7-14 07:00


Function myRound(Number As Variant, N As Integer) As Variant

'=========================================================
'自定义小数位,小数位后的数大于零就进1
'用法: myRound(33.2120,2)
' andymark 修改于 2006-7-13

'==========================================================
Dim IntNum As Variant

IntNum = Number - Int(Number * (10 ^ N)) / (10 ^ N)

If IntNum > 0 Then
   myRound = Int(Number * (10 ^ N)) / (10 ^ N) + 1 / (10 ^ N)
Else
   myRound = Int(Number * (10 ^ N)) / (10 ^ N)
End If

myRound = Format(myRound, "0." & String(N, "0"))


End Function

作者: tz-chf    时间: 2006-7-14 16:42
不用楼上那么复杂吧
作者: jicheng    时间: 2006-7-14 17:05
哪有直接应用的函数吗?

像round(x,2)这样的直接函数,有吗?
作者: andymark    时间: 2006-7-14 17:36
以下是引用tz-chf在2006-7-14 8:42:00的发言:
不用楼上那么复杂吧

      应该有更简单的,把它贴出来,让大家也学习学习
作者: andymark    时间: 2006-7-14 17:44
真的可以更简单,谢谢tz-chf提醒

Function myRound(Number As Double, N As Integer) As String
    myRound = Format(Int(Number * (10 ^ N) + 0.99999) / (10 ^ N), "0." & String(N, "0"))
End Function

作者: tz-chf    时间: 2006-7-14 18:24
按他的要求,不做成通用函数的话

round(x+0.05,1)
作者: jicheng    时间: 2006-7-15 05:57
加0.045,否则会出错,如是1.10的话会取1.2了,应该1.11以上才取1.2
作者: tz-chf    时间: 2006-7-15 19:42
以下是引用jicheng在2006-7-14 21:57:00的发言:


加0.045,否则会出错,如是1.10的话会取1.2了,应该1.11以上才取1.2

有道理
作者: ahjxqi    时间: 2009-9-3 17:47
ROUNDUP(x,1)   
这个函数就可以,2.23=2.3   2.25=2.3   12.81=12.9

希望能帮到你!
作者: Henry D. Sy    时间: 2009-9-3 22:11
if right(A,1)>0 then
B=left(A,len(A)-1)+0.1
end if
A为原值
B为进位后的值




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3