为什么会发生这种行为?第六位之后的小数在 double 中递增到下一位,但在转换为 int 时不递增。
转换为 int 时会引起问题,因为尽管打印 3,d1 在转换为整数时仍然转换为 2 而不是 3
double d1 = 2.999999; //6 digits after decimal
double d2 = 2.777777;
double d3 = 2.77777; //5 digits after decimal
double d4 = 2.99999;
cout<<d1<<endl; //gives 3
cout<<(int)d1<<endl; //still gives 2 not 3
cout<<d2<<endl; //gives 2.777778
cout<<d3<<endl; //gives 2.77777 as expected
cout<<d4<<endl; //gives 2.99999 as expected
Run Code Online (Sandbox Code Playgroud)
我假设它必须与编译器或精度有关,但我不确定这种意外行为。请帮忙