浮点数格式化后不显示成科学计数法的求助(50分)

  • 主题发起人 主题发起人 ouyongke
  • 开始时间 开始时间
O

ouyongke

Unregistered / Unconfirmed
GUEST, unregistred user!
我要将一个浮点数动态精确到某一位小数,但当小数位比较多、数字比较小时,如0.0000007精确到八位小数,此时就有两个矛盾的问题:
1、得到的数是“0.0000007”而不是“0.00000070”,不要最后那个零,如下
dPa:=StrToFloat(Edit2.Text);
sPointL:='8';
Caption:=Format('%.'+sPointL+'',[dPa]);
2、会得到科学计数法形式“7-E8”,如下
dPa:=RoundTo(dPa,0-StrToInt(sPointL));
解决一个,总是会出现另一个,很郁闷的说,哪位高人帮我看一下,谢谢了
 
不知道哪个最好
我用ZTV
 
zip格式吧,速度和压缩率都不错

我用VCLZIP
 
paszlib www.2ccc.com
 
ZTV在使用中....
 
一直用ZLib其他的没用过
提供两个函数
uses
ZLib, Classes, SysUtils;

function MCompressStream(SourceStream:TStream;TargetStream:TStream;CompressLevel:TMCompressLevel):Boolean;
var
CS:TCompressionStream;
begin
CS:=TCompressionStream.Create(TCompressionLevel(CompressLevel),TargetStream);
try
Result:=False;
CS.CopyFrom(SourceStream,0);
Result:=True;
finally
CS.Free;
end;
end;

function MDecompressStream(SourceStream:TStream;TargetStream:TStream):Boolean;
var
Buf:Array [$0..$FFFF] of byte;
CS:TDecompressionStream;
BufS:Integer;
begin
SourceStream.Position:=0;
CS:=TDecompressionStream.Create(SourceStream);
try
Result:=False;
Repeat
Bufs:=CS.Read(Buf,Sizeof(Buf));
if Bufs>0 then
TargetStream.Write(Buf,Bufs);
Until (Bufs=0);
Result:=True;
finally
CS.Free;
end;
end;
 
多人接受答案了。
 
后退
顶部