Round 函数
返回按指定位数进行四舍五入的数值。
Round(expression[, numdecimalplaces])
参数
Expression
必选项。数值表达式 被四舍五入。
Numdecimalplaces
可选项。数字表明小数点右边有多少位进行四舍五入。如果省略,则 Round 函数返回整数。
说明
下面的示例利用 Round 函数将数值四舍五入到两位小数:
Dim MyVar, pi
pi = 3.14159
MyVar = Round(pi, 2) 'MyVar contains 3.14。
Int、Fix 函数
返回数字的整数部分。
Int(number)
Fix(number)
number 参数可以是任意有效的数值表达式。如果 number 参数包含 Null,则返回 Null。
说明
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 和 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。
问题:
大家试试下面的代码:
Response.Wriet(round(4.5))
Response.Wriet(round(4.6))
Response.Wriet(round(3.5))
Response.Wriet(round(2.5))
Response.Wriet(round(1.5))
怎么样你的结果是什么?
结果:
4
5
4
2
2
嗯!好像不对?4.5和2.5的四舍五入结果有问题,难道是ASP的bug?
慢。。。这是个误会!
看看书上是怎么说的:
Round 函数在指定位为5的时候判断四舍五入时是根据前面数的奇偶来判断的,
为奇数时进位,为偶数时舍位
现在大家应该明白了,为什么出现上面的结果了。
但是问题还是没有解决,
1.ASP问什么这样处理
2.如果要对数字四舍五入怎么办,自己写方法?
大家不要着急听我慢慢说来
1.ASP这样处理的原因
实际上程序中的舍入大部分都不是四舍五入而是1-4舍,6-9入,5则返回最接近的偶数。这是金融中的要求,因为四舍五入中1-4舍,5-9入,舍入概率比为4/5,并不平均,这在金融中是非常重要的,只有将5取最接近的偶数才能在概率上做到对等。
2.可以使用FormatNumber
示例:
FormatNumber(1.5,0)
FormatNumber(2.5,0)
FormatNumber(3.5,0)
FormatNumber(4.5,0)
也可以使用Fix,Int函数,只是截取数字的整数部分。
哈哈!!!这回问题都解决了。