'自定义一个函数:功能是给小数直接进一位
创新互联自成立以来,一直致力于为企业提供从网站策划、网站设计、成都做网站、成都网站设计、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。
'num 要操作的小数
'n 保留几位小数,
Function getNumber(num As Double, n As Integer) As Double
Dim a As Double
a = Int(num * (10 ^ n)) / (10 ^ n)
If a = num Then
getNumber = a
Else
getNumber = a + 1 / (10 ^ n)
End If
End Function
-------------------------
调用一下:
Private Sub Command1_Click()
MsgBox (getNumber(3.1415926, 2))
End Sub
得到3.15
double是双精度 有效数值位52位 表示成指数的形式 即指数11位 即表示成
所以180.89305用2进制表示是10110100.1110010010011110111011001011111110110001010110110101
即
180.89305在double中存在的实际数值是
1.01101001110010010011110111011001011111110110001010110110101 *2^7
取小数点后 52位有效值后 等于10进制的180.893049999999998
所及加最后变成了 1808930.99999999998
第一次当然输出近似值1808931
第二次int函数去掉了小数点后的数int就是只取整数的部位的不是四舍五入 所以少了1
有两个函数:Int 和 Fix。
Int 定义为返回不大于给定参数的最大整数值,如:
Int(3.9) = 3
Int(3.1) = 3
Int(3) = 3
Int(0) = 0
Int(-3) = -3
Int(-3.1) = -4
Int(-3.9) = -4
Fix 又称“截尾”函数。
即简单保留整数部分,如:
Fix(3.9) = 3
Fix(-3.9) = -3
如果需要“四舍五入”,则得巧妙利用 Int 函数:
Int(x + 0.5) 表示四舍五入到个位;
Int(x * 100 + 0.5) * 0.01 表示四舍五入到百分位(小数点后第二位)
直接用int就可以了。
int(2310.125)=2310
如果需要自定义格式输出,就要用tostring方法,比如:
2310.231.tostring("0")的结果就是2310。
如果你要去掉个位数,看来只有(2310.231/10).tostring("0")了。
详细的ToString里面的参数,请看MSDN。我查了一下,有,地址是:
代码分析:
Math.Floor:返回小于或等于指定数字的最大整数。
Fix:返回数字的整数部分。
Math.Floor 和 Fix 函数都移除 Number 的小数部分并返回得到的整数值。
Math.Floor 和 Fix 函数之间的区别在于:如果 Number 为负,则 Math.Floor 返回小于或等于 Number 的第一个负整数,而 Fix 返回大于或等于 Number 的第一个负整数。例如,Math.Floor 将 -8.4 转换成 -9,而 Fix 将 -8.4 转换成 -8。
你的要求:如果你的要求是直接舍去,那么应当采用Fix方法,考虑到时负数的情况,那么采用Math.Floor将会出现非预期的结果。
测试结果:见附图。
欢迎交流。