小问题,四舍五入,急!!!200分,帮忙者都有分。(200分)

  • 主题发起人 主题发起人 zhugenan
  • 开始时间 开始时间
你用format函数试试,在DBGRID1的onDRAWCELL的事件处处理.
 
这样何如 strtofloat(formatfloat('###################',4.56))
 
数据库中可设置 Enabled BCD: True;
DELPHI中用FormatFloat('0',var) 两位小数用 '0.00'
 
trunc(x+0.5),保管好用
 
数据类型定义为number型,不要用float型。
 
round()处理不了,就用货币类型处理吧。
 
displayformat:='#,##0.00;-#,##0.00;'+#39+#39;
试一下,意想不到的效果。
 
设定displayformat 和 Editformat
 
我认为这是库文件的原因,只有在修改或显示的时候来设置了,在库里的数据无法改变
 
此问题我也问过,请参看ID:1146315 (http://www.delphibbs.com/delphibbs/dispq.asp?lid=1146315)
 
Round可以,Roundto也可以,Roundto(数字,想要保留的位数),如要保留一位小数,则
Roundto(4.99,-1),如要保留0位则Roundto(4.99,0)
 
怎么这个问题现在还没解决啊??
按我说的,将这个字段改成双精度数值型就一切搞定了~~
 
用round函数应该能解决!!
 
用round函数吧, 立即吹灯拔蜡, 搞定

round(x,digit)
x是你要四舍五入的数字,digit是保留位数, 如果取正, 则从整数部分保留, 如果取负
则从小数部分保留, 如果不保留小数,则取0
 
round() 可搞掂
 
定义数据的FORMAT格式
 
在数据库中使用非real型字段。如sybase中使用decimal(12,2)
 
以上说得通通错误,不信用1.5试试;
look here
function sswr(const v:double):integer;
begin
if frac(v)>=0.5 then
result:=strtoint(floattostr(int(v)))+1
else
result:=strtoint(floattostr(int(v)));
end;
 
怀疑用的是access数据库
 
我的4.999999901111111111111。。。。是在SQL中的显示,但在DELPHI编的程序中则显示一切
正常,仍是5,只是不能进行修改等一切操作。我必须从数据库中查出,并在数据库中修改后,
回到DELPHI才能解除死锁。
我的原代码:
if Messagedlg('真要清空吗?):-)想好了哟!!!',mtconfirmation,[mbok,mbcancel],0)=mrcancel then
Abort
else
begin
with qry do
begin
close;
sql.Clear ;
sql.Add ('update gzlsgo set gzf13=gzf13-gzf11-gzf4-gzf7');//就是此句!
execsql;
close;
end;

with qry do
begin
close;
sql.Clear ;
sql.Add ('update gzlsgo set gzf15=gzf13');
execsql;
close;
end;

清空后gzf13总会出现少许长串的数字导致我的程序死锁(只能SELECT 不能修改),必须
到SQL中才能修改。用Enabled BCD: True;好象并不见效。
也许该写个纠错程序但总写不好。请各位帮忙。
 
后退
顶部