我有个Double类型的值,小数点后的不管.
要求个位4舍5入,如146.3就要是150
134.9就要是130.
请高手指点

解决方案 »

  1.   

    X:= (Round(X) div 10) *10;
      

  2.   

    好深奥啊,小弟新接触Delphi7
    实在看不懂啊~~~
      

  3.   

    你试下就知道了啊
    function RoundX(X:Double):integer;
    begin
     Result :=(round(X) div 10)*10;
    end;
      

  4.   

    1.首先对X取整
    2.div 10 整除10,把个位去掉
    3.*10 还原值
      

  5.   

    var
      x: Double;
    begin
      x := Round(Trunc(x) / 10) * 10;
    end;先用Trunc,去掉小数点后面的东西,再除以10,然后再四舍五入,最后再乘10
    如,146.3,trunc后变成146,除以10后变成14.6,再四舍五入变成15
    最后再乘10
      

  6.   

    codegame的代码有问题。
    楼主要的是先去掉小数点,然后再对个位数四舍五入。
    而你的是先四舍五入,再整除10,两步都错了。
      

  7.   


    四舍五入么就是外面的Round
      

  8.   

    x:=round(x / 10)*10;
    x:=146.3
    x/10=14.63
    round(14.63)=15;
    x=15*10=150
      

  9.   

    刚才没看清要求
    这个是正确的:
    function RoundX(X:Double):integer;
    begin
      Result :=((Trunc(X)+5) div 10)*10;
    end;
    你这个效率更底点
      

  10.   

    function RoundFloat(f:double;i:integer):double;
    var
      s:string;
      ef:extended;
    begin
      s:='#.'+StringOfChar('0',i);
      ef:=StrToFloat(FloatToStr(f));
      result:=StrToFloat(FormatFloat(s,ef));
    end;//调用方法
     
     Trunc(RoundFloat(146.3/10,0)*10.0);