zoukankan      html  css  js  c++  java
  • Float四舍五入

    关键词:一个四舍五入的函数

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

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

    uses Math, StrUtils;

    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;



  • 相关阅读:

    双向链表和环形链表(约瑟夫问题)
    单向链表的增删查改
    稀疏数组与环形数组
    离焦事件。这个坑谁抗的住呀,好无语呀
    maven
    maven工程运行出Unable to compile class for JSP: 错误
    笔记-JavaWeb学习之旅19
    获取redis cluster master对应的slot分布情况
    批量获取mysql数据库实例指定参数的值
  • 原文地址:https://www.cnblogs.com/760044827qq/p/3840967.html
Copyright © 2011-2022 走看看