ZC: Delphi7 中的报错信息为(主要信息):"Invalid floating point operation"
1、 (LongWord($133f)这句是什么意思-CSDN论坛.html)
2楼:
这个应该用_control87或者_controlfp
#include <float.h>_control87(0x133f, 0xffff);至于LongWord($133f)这是没有什么意义的,LongWord($133f)=$0000133f,32位无符号整数,仅此而已。4楼:
// Default value (with exceptions) is 0x1372.这个注释是错的,默认值是0x1332。
Set8087CW是Delphi RTL函数,C++中最好还是用_control87或者_controlfp。
2、官方资料:
2.1、Set8087CW (C++) - RAD Studio Code Examples.html ()
Description
This example accesses the Floating Point Unit (FPU) control register. Try turning floating point exceptions off and on and dividing a number by zero to test it.
Code
Word Saved8087CW; void __fastcall TForm1::Button1Click(TObject *Sender) { Edit3->Text = FloatToStr(StrToFloat(Edit1->Text) / StrToFloat(Edit2->Text)); } void __fastcall TForm1::RadioGroup1Click(TObject *Sender) { if (RadioGroup1->Items->Strings[RadioGroup1->ItemIndex] == "FPU Exceptions") System::Set8087CW(Saved8087CW); if (RadioGroup1->Items->Strings[RadioGroup1->ItemIndex] == "No FPU Exceptions") System::Set8087CW(0x133f); // Disable all fpu exceptions. } __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { RadioGroup1->Items->Add("No FPU Exceptions"); RadioGroup1->Items->Add("FPU Exceptions"); RadioGroup1->ItemIndex = 2; Saved8087CW = Default8087CW; // Save this, because Set8087CW changes it. } void __fastcall TForm1::FormDestroy(TObject *Sender) { System::Set8087CW(Saved8087CW); // Default value (with exceptions) is 0x1372. }
Uses
- ( | | )
- ( | | )
See Also
:
3、
4、
5、