1、VB中取整问题?怎么取整?
查看MSDN帮助
********************************************
下面的示例利用 CLng 函数把值转换为 Long:
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 是双精度值。
MyLong1 = CLng(MyVal1) ' MyLong1 包含 25427。
MyLong2 = CLng(MyVal2) ' MyLong2 包含 25428。
--------------------------------------------------------------------------------
注意 CLng 函数与 Fix 和 Int 函数功能不同,后两者函数对数值的小数部分进行截尾取整而不是四舍五入。当小数部分恰好等于 0.5 时, CLng 函数通常向与此数最接近的偶数取整。例如,0.5 取整为 0、1.5 取整为 2。
***********************************************
但实践证明,好象是"错误"的。
“后两者函数对数值的小数部分进行截尾取整”但实践证明依然是进行“四舍五入”的,实验程序代码如下:
Private Sub Command6_Click()
Dim test As Long '(关键错误)
test = Text7.Text
Text8.Text = CLng(test)
End Sub
再查看MSDN帮助
************************************************
注意 CInt 与 Fix 和 Int 函数不同,后两者将数字的分数部分截尾取整,而不是四舍五入。当分数部分恰好为 0.5 时,CInt 函数通常将其四舍五入为最接近的偶数。例如,0.5 被四舍五入为 0,而 1.5 被四舍五入为 2。
************************************************
原来问题出现在Dim test As Long已经强制转化为长整形了,而这种长整形当然就是四舍五入的了。后面不管你怎么转换都是四舍五入后的整形了。
正确的测试程序:
Private Sub Command6_Click()
Dim test As Double
test = Text7.Text
Text8.Text = Int(test)
End Sub
不过还有还几段也是值得看的。
*************************************************
Int 和 Fix 函数都删除 number 参数的小数部分并返回以整数表示的结果。
Int 和 Fix 函数的区别在于如果 number 参数为负数时,Int 函数返回小于或等于 number 的第一个负整数,而 Fix 函数返回大于或等于 number 参数的第一个负整数。例如,Int 将 -8.4 转换为 -9,而 Fix 函数将 -8.4 转换为 -8。
Fix(number) 等同于:
Sgn(number) * Int(Abs(number))
下面的示例说明 Int and Fix 函数如何返回一整数 小数位数:
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。
*****************************************************
文章评论(0条评论)
登录后参与讨论