Mega Code Archive

 
Categories / Delphi / Examples
 

Floating point exception during trunc

Question: My application throws a floating point exception during a Trunc() call. I use data type float. Answer: The error is possibly created earlier and surfaces late. In a similar situation I found that clearing any pending floating-point exceptions before the 'critical operation' helps. There is an assembly function FNCLEX which will do exactly that. You can write yourself a Pascal wrapper around it as shown in the example below. The wrapper uses FNCLEX instead of FCLEX, see the commentary about the difference. // FCLEX clears any floating-point exceptions which may be pending. // FNCLEX does the same thing but doesn't wait for previous floating-point // operations (including the handling of pending exceptions) to finish first. procedure ClearPendingExceptions; asm FNCLEX end;