在ado中(jet 4.0)怎么会是5舍6入?round(5.55,1)竟然等于5.5!怎么办?
解决方案 »
- 定义了个const类型可是超过了255个字符,怎么办?
- 虚心求教,求一个可通用的获取MAC地址的代码
- 问一个模糊查询问题
- delphi如何链接Oracle数据库?
- 控件问题啊
- 资源管理器中文件拖到shelllistview的问题
- 减少内存占用问题,请大家帮忙
- 窗体的一属性Alphablend及Alphablendvalue各起什么作用?能否解释一下。
- 怎么让一个exe双击不能运行,必须要由别的exe调用才能运行?
- 请问报表大侠:quickreport中的复合报表控件预览窗口能不能不让它有最小化最大化按钮,或者让它stayontop也行
- 程序莫名退出情况收集?
- 急急急!100分求教TADOStoredProc问题,在线等待!
(case b.bl*a.sl*10-floor(b.bl*a.sl*10)>=0.5 then (floor(b.bl*a.sl*10)+1)/10.0
else (floor(b.bl*a.sl*10)+1)/10.0 end
大概这样吧
d:=5.55;
d:=strtofloat(formatfloat('0.0',d));
试试round(5.65,1)=?你就明白了
它的算法如下:
当要进位的上一位为偶数时5进位
当要进位的上一位为奇数时5不进位,
看来比较公平
如果有兴趣可以自己做个函数,实现中国人的四舍五入。
我的程序只为收款考虑,多收1分没事,少收1分不行,所以我用round(5.55+0.01,1)
access,sql server,oracle还是其他?
access,sql server中是round
ROUND
返回数字表达式并四舍五入为指定的长度或精度。语法
ROUND ( numeric_expression , length [ , function ] ) 参数
numeric_expression精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。function是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。当指定 0 以外的值时,将截断 numeric_expression。返回类型
返回与 numeric_expression 相同的类型。注释
ROUND 始终返回一个值。如果 length 是负数且大于小数点前的数字个数,ROUND 将返回 0。