Delphi

本类阅读TOP10

·游戏外挂设计技术探讨①
·如何使用Delphi设计强大的服务器程序
·分布式网络考试系统原型分析及实现
·用DLL方式封装MDI子窗体。
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·url编码与解码工具附代码
·工人线程中关闭窗体的实现
·hdsi2.0 sql注入部分抓包分析语句
·Borland Delphi 2005 下载

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
一个四舍五入的函数

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

这是一个四舍五入的函数,具体用法 myround(1.999,2) = 2.00 第一位1.999为要四舍五入的数,2为要取的小数位。

欢迎大家测试探讨。QQ:81392790

function myround(const yuan: Extended; const pp: Integer): Extended;
//yuan:原浮点数,PP保留 小数点后第几位
var
 p,l,m,l2:Longint;
 s:string; // 原浮点数
 sq:string; // 小数点前
 sh:string;//小数点后
begin
 if yuan=0 then exit;// 原浮点数 0
 if pp<0 then exit; //非法小数点后第几位
 s:=floattostr(yuan);
 p:=pos('.',s);   //小数点位置
 sq:=midstr(s,1,p-1);
 sh:=midstr(s,p+1,length(s)-length(sq)-1);
 l:=length(sh);//小数位数
 l2:=length(sq);//整数位数
 if pp>=l then
  begin//0
   result:=strtofloat(s);
   exit;//比如 11。06 要保留到 小数点后第3位显然 不合理
  end;//
{ if pp=l then  //比如 11。06 要保留到 小数点后第2位不用处理 直接返回
   begin//1
     Result:=s;
     exit;
   end;//1 }
  if pp<l then //比如 11。06 要保留到 小数点后第1位 ,。。。
  begin//2
    m:=strtoint(sh[pp+1]);
    if m>=5 then
    begin
      if pp>=1 then //保留到 小数点后第1,2。。。位
      begin//3
       sh:=midstr(sh,1,pp);
       sh := inttostr(strtoint(sh)+1);
       if length(sh)>pp then
       begin
          sh:= midstr(sh,2,pp);
          sq:= inttostr(strtoint(sq)+1);
       end;
      Result:=strtofloat(sq+'.'+sh);
      exit;
      end//3
      else  //保留到 小数点后第0位
      begin//4
       sq[l2]:=chr(ord(sq[l2])+1);
       Result:=strtofloat(sq);
       exit;
      end;//4
    end
    else
    begin
      if pp>=1 then //保留到 小数点后第1,2。。。位
      begin//3
       sh:=midstr(sh,1,pp);
       Result:=strtofloat(sq+'.'+sh);
      exit;
      end//3
      else  //保留到 小数点后第0位
      begin//4
       Result:=strtofloat(sq);
       exit;
      end;//4
    end;
  end;//2
end;




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有