猿问

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

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 ,请高手指教啊,急

狐的传说
浏览 174回答 3
3回答

汪汪一只猫

round()函数是4舍6入,5看奇偶。比如 round(1.5,0)=2,round(2.5,0)=2,round(2.5001,0)=3,这样就是你的要求了Int(2.5 + 0.5)=3Int(2.499 + 0.5)=2

慕尼黑5688855

在 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.mathfunction sishewuru(byval dblX as double) as integerif dblx >= truncate(dblX) +0.5 thenreturn truncate(dblX) + 1elsereturn truncate(dblX)end ifend Function随便瞎写的,你可能需要修改吧

慕森王

在精度允许范围内加上一点点,比如round(2.5+0.00001),结果就是3啦private function RoundEx(byval dVal as Variant,optional byval lLen as long=0) as doubleif isnumeric(dVal) thenif val(dVal)<0 thenRoundEx=round(val(dVal)-0.00000000000001,lLen)elseif val(dVal)>0 thenRoundEx=round(val(dVal)+0.00000000000001,lLen)elseRoundEx=0end ifend ifend function
随时随地看视频慕课网APP
我要回答