Search code examples
delphidelphi-7

Get Integer number from a Float?


I Have a number that is divided by 12 Months.

I need to get the result of the division as an Integer number.

Ex:

 mTblDetailMonth.FieldByName('Target_').asfloat := (MTblDetail.FieldByName('Target_').AsInteger / 12 );

When the MTblDetail.FieldByName('Target_').AsInteger is equal to 20 and divide 20 / 12, the Result is 1.666666667.

I need to get the number 1 only and then calculate the floating decimal number.


Solution

  • Your question is not very clear, so here's two alternatives:

    The answer to your question as it is written (assuming an integer variable years and a float variable remainder) use trunc to get the integer part of the division result

    years := trunc(MTblDetail.FieldByName('Target_').AsInteger / 12); // returns 1
    remainder := MTblDetail.FieldByName('Target_').AsInteger / 12 - years; // returns 0.6666...
    

    Since you talk about months, maybe you want to know 'years' and 'months' as integers. If so, use div and mod operators:

    years := MTblDetail.FieldByName('Target_').AsInteger div 12 ;  // returns 1
    months := MTblDetail.FieldByName('Target_').AsInteger mod 12 ; // returns 8