dd1=6.55
dd2=14264.3
dd:=dd1 * dd2;
dd:=strtofloat(formatfloat('0.##',dd));
得到93431.16(实际是93431.165,但最后一位5没有四舍五入进1,为什么)然而
dd1=6.55
dd2=14264.3001
dd:=dd1 * dd2;
dd:=strtofloat(formatfloat('0.##',dd));
得到93431.17(实际是93431.166,最后一位6进1,为什么)如何在末位是5时进一位
dd2=14264.3
dd:=dd1 * dd2;
dd:=strtofloat(formatfloat('0.##',dd));
得到93431.16(实际是93431.165,但最后一位5没有四舍五入进1,为什么)然而
dd1=6.55
dd2=14264.3001
dd:=dd1 * dd2;
dd:=strtofloat(formatfloat('0.##',dd));
得到93431.17(实际是93431.166,最后一位6进1,为什么)如何在末位是5时进一位
解决方案 »
- 今天生日,放分!
- 急,请各位帮忙,如何实现float型转成千分位的'0,000.00',然后再由千分位转为float型'0000.00'.(在线等待)
- fastreport报表打印问题,急! 给100分
- ado-sql
- 我很想知道成都有没有好一点的软件学院?
- win98 里没有预装ado吗?
- 在DBGrid中如何格式化输出的数?
- HELP ME ! 我在A这个OCX控件里调用了B这个OCX控件,我在注册B这个控件时正确,我在注册A这个控件时系统一直报找不到指定的模块,但我发
- 数据转化的问题
- 如何开发多语言版本的软件!
- 初次使用RO Datanap,在服务器端中增加方法,如何在客户端访问呢?
- delphi现在还有多少人在用?
var
vLFactor: Extended;
begin
vLFactor := IntPower(10, Digit + 1);
Result := Trunc((Value * vLFactor + 5) / 10) / IntPower(10, Digit);
end;
dd2=14264.3
dd:=dd1 * dd2;
dd:=trunk(dd*100+0.5)/100
dd1=6.55
dd2=14264.3
dd:=dd1 * dd2;
dd:=trunc(dd*100+0.5)/100
直接调用就好了,有什么复杂的?
返回值 := RoundingOff(数字,保留的小数位)
roundto执行舍入操作。
result:=int(value*100+0.5)/100
else
result:=int(value*100-0.5)/100
str(strtoreal(dd):x:y,dd); x=字段最大长度,y=取多少小数位
dd:=trim(dd);
我的delphi2010里roundto是五舍六入,SimpleRoundTo是四舍五入没错呀。
function comm_Round(dFigure:double;iDecimals : integer): double; //四舍五入函数;
var
iIER : integer; //乘数
i : cardinal;
dTmp : double;
begin
iIER := 1;
for i:=1 to iDecimals do
iIER := iIER*10; dTmp := dFigure * iIER;
if dFigure>0 then //正数
begin
if frac(dTmp)<0.5 then
dTmp := Trunc(dTmp)
else
dTmp := Trunc(dTmp) + 1;
result := dTmp/iIER;
end
else //非正数
begin
if frac(dTmp)>-0.5 then
dTmp := Trunc(dTmp)
else
dTmp := Trunc(dTmp) - 1;
result := dTmp/iIER;
end;
end;
四舍六入。变通一下就就行啦!!!!!!!!!
math.roundto(0.12345 + 0.001, -2)
我是这么做的,可以啊
var
ab:real;
begin
ab :=strtofloat(edit1.Text);
edit1.Text :=FormatFloat('#.##',ab);
end;
trunc() 不四舍五入;
ceil() 有余数就进1.不过要在uses中加入math.你自己试试吧。
var
ab:real;
dd,cc,ee:real;
begin
ab :=strtofloat(edit1.Text);
edit2.Text :=floattostr(RoundingOff(ab,2));
dd:=((ab*1000+5)/10);
cc :=Trunc(dd);
ee :=cc/100;
edit4.text :=floattostr(ee);
end;
end.我也遇到这个问题,所以刚做了一个,可以的久经考验
绝对没有问题的算法,超简单的东西。