??关于进位的

zhouyuzzzzzz 2005-08-01 02:54:13
在SQL中:
Ceiling(0.00) = 0
Ceiling(0.10) = 1
Ceiling(0.20) = 1
Ceiling(0.30) = 1
Ceiling(0.40) = 1
Ceiling(0.50) = 1
Ceiling(0.60) = 1
Ceiling(0.70) = 1
Ceiling(0.80) = 1
Ceiling(0.90) = 1
Ceiling(1.00) = 1
Ceiling(1.10) = 2
那我在程序中该如何做到以上的效果呢,有没有象上面进位的函数。

...全文
84 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
脆皮大雪糕 2005-08-01
  • 打赏
  • 举报
回复
WallesCai,你的边界没有处理好哦
用你的函数处理0.00看看,得到的结果是1哦,处理1.00得到结果为2,不符合要求!
呵呵
crycoming 2005-08-01
  • 打赏
  • 举报
回复
我也凑热闹
Function DoIt(a As Double) As Long
Dim d As Double

d = a - CLng(a)
If d > 0 Then
DoIt = CLng(a) + 1
Else
DoIt = CLng(a)
End If


End Function
熊孩子开学喽 2005-08-01
  • 打赏
  • 举报
回复
好像偶的代码最简单,也准确吧,哈哈,别和我抢分啦,我都好久没答题了。
熊孩子开学喽 2005-08-01
  • 打赏
  • 举报
回复
简单哦:

写个函数:
FUNCTION OO(BYVAL II AS SINGLE) AS LONG
OO=(II+0.99999999999999999)
END FUNCTION

测试:
Dim I As Single
For I = 0.1 To 4 Step 0.1
Debug.Print OO(I)
Next

结果:
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
5

只要让0.999...的精确度比你的输入多一位就够。
脆皮大雪糕 2005-08-01
  • 打赏
  • 举报
回复
这样就赚100分,有点不好意思,呵呵
sdrcxzy 2005-08-01
  • 打赏
  • 举报
回复
说错了,楼上的不好意思。
脆皮大雪糕 2005-08-01
  • 打赏
  • 举报
回复
测试代码:
Dim i As Double
For i = 1.1 To 3 Step 0.1
Debug.Print "test(" & i & ")=" & test(i)
Next

输出结果:
test(1.1)=2
test(1.2)=2
test(1.3)=2
test(1.4)=2
test(1.5)=2
test(1.6)=2
test(1.7)=2
test(1.8)=2
test(1.9)=2
test(2)=2
test(2.1)=3
test(2.2)=3
test(2.3)=3
test(2.4)=3
test(2.5)=3
test(2.6)=3
test(2.7)=3
test(2.8)=3
test(2.9)=3
sdrcxzy 2005-08-01
  • 打赏
  • 举报
回复
不对,1.00不行。
脆皮大雪糕 2005-08-01
  • 打赏
  • 举报
回复
Public Function test(ByVal inputVal As Single) As Long
If Fix(inputVal) <> inputVal Then
test = Fix(inputVal) + 1
Else
test = inputVal
End If
End Function
sdrcxzy 2005-08-01
  • 打赏
  • 举报
回复
好像没有一个这样的函数是往大数进位。

这样可以吗?


i=-fix(-i)+1

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧