Я уже прочитал кидать предложения по Converting Double to String in C++ и Convert double to string C++? но меня попросили создать функцию, не ООП принимать в двойной, и возвращает зЬй :: строку, используя только математику , Я был в состоянии сделать это с междунар в прошлом Wich:двойной строки C++, используя математику
std::string toString(int value) {
string result = "";
bool negative = false;
if (value < 0) {
negative = true;
value *= (-1);
}
do {
string tmpstr = "0";
tmpstr[0] += value%10;
result = tmpstr + result;
value /= 10;
} while (value != 0);
if (negative) {
result = "-" + result;
}
return result;
}
, но проблема в том, что он использует чек больше нуля, чтобы продолжать идти. Я продолжаю думать о чем-то вроде
if (value < 0){
value *= 10;
}
Я думаю, что это должно идти до% 10, но я не уверен. каждый раз, когда я пытаюсь, я получаю целое число, а не десятичное.
например, я даю ему 125,5 (результат 251/2), и он выводит 1255. хотя в некоторых случаях я получаю только 125. Любая помощь будет большой.
Update: выбранное решение
std::string toString(float value){
bool negative = false;
if (value < 0) {
negative = true;
value *= (-1);
}
int v1 = value; // get the whole part
value -= v1; // get the decimal/fractional part
//convert and keep the whole number part
std::string str1 = toString(v1);
std::string result = "";
do {
value *= 10;
int tmpint = value;
value -= tmpint;
string tmpstr = "0";
tmpstr[0] += tmpint % 10;
result = tmpstr + result;
value /= 10;
} while (value != 0);
result = str1 + "." + result;
if (negative) {
result = "-" + result;
}
return result;
}
[ 'станд :: to_string' из] (http://en.cppreference.com/w/cpp/string/basic_string/to_string). –
Xeo
@Xeo Мне было предложено сделать это, используя математические вызовы методов – gardian06