обрезать — C ++: удалить конечные нули из дробной части двойной переменной

Я ищу, чтобы удалить завершающие нули из двойной переменной и присвоить результат обратно двойной переменной.

Обратите внимание, что

  1. Я на C ++ 98.
  2. Я не ищу распечатки (используя snprintf, cout или printf с% g); Я ищу, чтобы удалить конечный ноль и назначить остаток обратно в двойную переменную.

Вход: двойной (например, 100.250 или 100.1010 или 100.375)

Выход: двойной (100,25, 100,101, 100,375)

например

double Price = 100.250;
double convert = TrimZeros(100.250);
// convert = 100.25
  • Я попытался преобразовать double в stringstream и обрезать конечный ноль этой строки. Однако я не могу преобразовать его обратно в двойной после обрезки (с необходимой точностью).

например

double Price = 100.250;
ostringstream osPrice;
osPrice << fixed << Price;
string cPrice = TrimString(osPrice.str()); // my function to trim trailing zero of string
//cPrice = "100.25"
// Now When I try to convert cPrice back to double, it adds extra zeros i.e. 100.250000

Я в порядке с чем угодно, то есть
— Прямая функция, чтобы обрезать завершающие нули двойного и присвоить остаток обратно двойной переменной.

ИЛИ ЖЕ

  • Преобразуйте double в String, обрежьте нули из строки и верните их обратно в удвоение.

Пожалуйста, помогите.

-1

Решение

Типы как double держать значения, а не представления. 100, 100.0, а также one hundred а также 10x10 все разные представления для одного и того же значения. То, что вы пытаетесь сделать, это ошибка категории, которая не имеет никакого смысла.

Это все равно, что спросить кого-то, у кого десять машин, может ли он иметь десять машин на базе 16.

// Now When I try to convert cPrice back to double, it adds extra zeros i.e. 100.250000

Покажите, как вы это определили. Потому что это невозможно. Значение будет сто одна четверть. Вы можете представлять это любым способом, который вы хотите для своих собственных целей.

Когда вы делаете int i = 2; это значение в i в базе десять? Или это бинарный? Или это римскими цифрами? Это не что-то из этого. Это число два. Количество рук у вас есть.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]