By default, formatted output std::ostreamrounds off floating point values โโto six significant decimal digits. You need seven to avoid rounding your number to 1000:
cout << setprecision(7) << SomeNumber << endl;
^^^^^^^^^^^^^^^
, , float, 32- IEEE. , double. , 1000, , :
float SomeNumber = 999.99999;
cout << setprecision(10) << SomeNumber << endl;