C++: удалить конечные нули из дробной части двойной переменной
Я ищу, чтобы удалить завершающие нули из двойной переменной и присвоить результат обратно двойной переменной.
Обратите внимание, что
- Я на C++ 98.
- Я не ищу распечатки (используя 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
в базе десять? Или это бинарный? Или это римскими цифрами? Это не что-то из этого. Это номер два. Количество рук у вас есть.