执行结果为什么会这样?
这个不是简单的“4舍5入法”。
具体叫什么名称的方法,我也不清楚。
不过,可以给你说一下具体规则:
① 如果舍入位小于5,则舍去;如果大于5,则进位。
这个“舍入位”就是要保留的有效数字之后的那一位。
比如,你是要传入到整数,就是“0位小数”,即小数点后的第1位。
如果你要保留4位小数,则它就是指小数点之后的第5位。
这样说了,你应该明白我说的“舍入位”指哪个数字了吧。
② 如果舍入位是5、并且它的后面没有有效数字(必须非0的才算),则看保留位:
如果保留位是奇数,则进位;如果是偶数,则舍去。
就象你的贴子中,因为要舍入到整数,保留位就是个位数,1.5和3.5都进位了,2.5则舍去了。
假设是保留2位小数:1.255→1.26 1.265→1.26 1.275→1.28 1.285→1.28
③ 如果舍入位是5、并且它后面还有有效数字,则进位。
比如保留整数:2.5→2 2.50000000000001→3
这个例子中,虽然2.5的后面有很多个0之后才有一个1,但它也是“有效”的(注意精度问题)。
看了我上面所说的,你应该明白了吧?
但楼主要注意一个问题:在VB6的 Fomat( )函数中,
如果牵涉到舍入问题,它就是采用简单的“四舍五入”规则进行处理的。
具体叫什么名称的方法,我也不清楚。
不过,可以给你说一下具体规则:
① 如果舍入位小于5,则舍去;如果大于5,则进位。
这个“舍入位”就是要保留的有效数字之后的那一位。
比如,你是要传入到整数,就是“0位小数”,即小数点后的第1位。
如果你要保留4位小数,则它就是指小数点之后的第5位。
这样说了,你应该明白我说的“舍入位”指哪个数字了吧。
② 如果舍入位是5、并且它的后面没有有效数字(必须非0的才算),则看保留位:
如果保留位是奇数,则进位;如果是偶数,则舍去。
就象你的贴子中,因为要舍入到整数,保留位就是个位数,1.5和3.5都进位了,2.5则舍去了。
假设是保留2位小数:1.255→1.26 1.265→1.26 1.275→1.28 1.285→1.28
③ 如果舍入位是5、并且它后面还有有效数字,则进位。
比如保留整数:2.5→2 2.50000000000001→3
这个例子中,虽然2.5的后面有很多个0之后才有一个1,但它也是“有效”的(注意精度问题)。
看了我上面所说的,你应该明白了吧?
但楼主要注意一个问题:在VB6的 Fomat( )函数中,
如果牵涉到舍入问题,它就是采用简单的“四舍五入”规则进行处理的。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-01-19
没错的,你不妨参考一下GB3101-1993这个《有关量、单位和符号的一般原则》的标准。追问
这个标准和vb有什么关系,为何上面程序不遵循四舍五入原则。
追答系统必须符合国家标准。