Вы можете попробовать использовать std::fixed
и std::setprecision
для отображения числа с плавающей запятой без десятичной точки и формы возведения в степень.
std::ostringstream str;
str << std::fixed << std::setprecision(0) << 6544556E+17 << std::endl;
std::string s = str.str();
Однако на моей машине я не получаю "654455600000000000000000 "в s
.Я получаю "654455599999999987941376".Я собираюсь предположить, что 654455600000000000000000 не является точно представимым с использованием представления с плавающей точкой IEEE.Я не уверен, какую логику вам придется использовать для преобразования "654455599999999987941376" в "654455600000000000000000".