为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下怎么能实现 = 5 时也进1 ?有什么好办法?

请问一下怎么能实现 = 5 时也进1 ?有什么好办法?

狐的传说 2022-06-17 17:11:41
vb中怎么样将一个小数点后第一位数字为5的数字四舍五入成整数,例如:将1.5变为2,很多函数我都试过,如 math.round(2.5) = 2 但是math.round(2.6) = 3,cint(2.5) = 2 ,cint(2.6) = 3,这两个函数都是小数点后第一位 = 5 时就舍掉,大于5时就 进一,怎么能实现 = 5 时也进1 ,请高手指教啊,急
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

round()函数是4舍6入,5看奇偶。
比如 round(1.5,0)=2,round(2.5,0)=2,round(2.5001,0)=3,

这样就是你的要求了
Int(2.5 + 0.5)=3
Int(2.499 + 0.5)=2

查看完整回答
反对 回复 2022-06-20
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

在 Option Strict Off 的情况下,可以使用 CInt 函数将其他数据类型显式转换为 Integer 类型。但是,Cint 并非截去数字的小数部分,而是舍入为最接近的整数。例如:

MyNumber = CInt(99.8) ' Returns 100.
MyNumber = CInt(-99.8) ' Returns -100.
MyNumber = CInt(-99.2) ' Returns -99.

自己模拟常见的四舍五入,需要 import system.math
function sishewuru(byval dblX as double) as integer
if dblx >= truncate(dblX) +0.5 then
return truncate(dblX) + 1
else
return truncate(dblX)
end if
end Function
随便瞎写的,你可能需要修改吧

查看完整回答
反对 回复 2022-06-20
?
慕森王

TA贡献1777条经验 获得超3个赞

在精度允许范围内加上一点点,比如round(2.5+0.00001),结果就是3啦

private function RoundEx(byval dVal as Variant,optional byval lLen as long=0) as double
if isnumeric(dVal) then
if val(dVal)<0 then
RoundEx=round(val(dVal)-0.00000000000001,lLen)
elseif val(dVal)>0 then
RoundEx=round(val(dVal)+0.00000000000001,lLen)
else
RoundEx=0
end if
end if
end function


查看完整回答
反对 回复 2022-06-20
  • 3 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号