Как удалить лишние нули в строках, преобразованных из типа данных double?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как удалить лишние нули в строках, преобразованных из типа данных double?

Сообщение Anonymous »

Когда я преобразую десятичное число (т. е. двойное) в строку, дополнительные нули, например 2, становятся "2.00000", а 1,1 превращаются в "1.10000" .
Теперь я придумал, как использовать две функции: (первая — это фактическая функция, которую я использую)

Код: Выделить всё

string doubleToString(double value)

{
string output = to_string(value);
int index = findStrAfterStr(output, ".", "0");
if (index > 0)
{
output.erase(index);
}

if (output[output.length() - 1] == '.')
{
output.erase(output.length() - 1);
}

return output;
}
И:

Код: Выделить всё

int findStrAfterStr(string sourceStr, string firstStr, string wantedStr)
{
bool firstStrFound = false;
for (int i = 0; i < sourceStr.length(); ++i)
{
if (!firstStrFound)
{
firstStrFound = sourceStr.substr(i, firstStr.length()) == firstStr;
}

else if (sourceStr.substr(i, wantedStr.length()) == wantedStr)
{
return i;
}
}

return 0;
}
И тут был недостаток. Преобразование таких чисел, как 3,4 и 9,283, прошло нормально и превратилось в «3,4» и «9,283» соответственно. Но ввод 1.01 и 12.007 превратил их в «1» и «12» соответственно. Я знаю, в чем заключается недостаток, я пытался исправить его, создав совершенно новую функцию, у которой были свои недостатки, поэтому я сдался. Как я могу это исправить?

Подробнее здесь: https://stackoverflow.com/questions/785 ... -data-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»