2014年12月11日 星期四

Delphi 四捨五入, 無條件進位, 無條件捨去

四捨五入  無條件進位  無條件捨去

=====================================================
四捨五入
一開始沒找到函數,所以自己寫
// 整數以下四捨五入
function Round_to_Int(Value: Extended): Integer;
var
  iTemp: Integer;
begin
  if TryStrToInt(Format('%1.0f', [Value]), iTemp) then begin
    Result:= iTemp;
  end else begin
    Result:= 0;
  end;
end;

=====================================================
四捨五入 SimpleRoundTo

Unit Math
// Delphi syntax:
  typedef Word TSimpleRoundToRange;
  extern PACKAGE double __fastcall SimpleRoundTo(const double AValue, const TSimpleRoundToRange ADigit = -2);
// 範例:
  SimpleRoundTo(1234567, 3) = 1234000
  SimpleRoundTo(1.234, -2)  = 1.23
  SimpleRoundTo(1.235, -2)  = 1.24
  SimpleRoundTo(-1.235, -2) = -1.23

=====================================================
四捨六入五成雙 Round ()

Unit System
// Delphi syntax:
  function Round(X: Extended): Int64;
// 範例:
  Round(1.4) = 1
  Round(2.4) = 2
  Round(1.5) = 2
  Round(2.5) = 2
  Round(1.6) = 2
  Round(2.6) = 3
  //
  Round(-1.4) = -1
  Round(-2.4) = -2
  Round(-1.5) = -2
  Round(-2.5) = -2
  Round(-1.6) = -2
  Round(-2.6) = -3

=====================================================
無條件進位 Ceil

Unit Math
// Delphi syntax:
  function Ceil(const X: Extended):Integer;
// 範例:
  Ceil(-2.8) = -2
  Ceil(2.8) = 3
  Ceil(-1.0) = -1
注意: X 值必須小於 MaxInt

=====================================================
無條件捨去 Floor

Unit Math
// Delphi syntax:
  function Floor(const X: Extended): Integer;
// 範例:
  Floor(-2.8) = -3
  Floor(2.8) = 2
  Floor(-1.0) = -1
注意: X 的絕對值必須小於 MaxInt

=====================================================
只取整數 Trunc

Unit System
// Delphi syntax:
  function Trunc(X: Extended): Int64;
// 範例:
  Trunc(1.4)  = 1
  Trunc(-1.4) = -1
  Trunc(2.6)  = 2
  Trunc(-2.6) = -2

=====================================================
只取小數 Frac

Unit System
// Delphi syntax:
  function Frac(X: Extended): Extended;
// 範例:
  Frac(123.456)  = 0.456
  Frac(-123.456) = -0.456






沒有留言:

張貼留言