C++ десятичное форматирование вывода
Я пишу двойное значение в файл. Числовое значение записывается с точкой в качестве десятичного разделителя. Я хотел бы использовать запятую. Как я могу это сделать?
3 ответа
Обычным способом является использование локали с десятичным разделителем, установленным на запятую. Если ваша машина сконфигурирована для этого, вы можете просто использовать для нее безымянную локаль:
std::cout.imbue(std::locale(""));
std::cout << 12345.67;
Вы можете найти ответ в предыдущем вопросе. Это в основном меняет локаль, используемую потоками, которые вы используете.
Я думаю в библиотеке cmath
есть функция с именем modf, которая принимает число с плавающей запятой или двойное число, и указатель на число с плавающей запятой или двойное число и возвращает целое число.
double intPart; double fractPart; fractPart = modf(doubleValue, &intPart);Таким образом, вы передаете двойное значение, оно возвращает десятичную часть как целое число, а целочисленное значение сохраняется в указателе, который вы передали.
Затем вы можете записать их в файл так, как вы хотите, с запятой в середине или чем-то еще, просто запишите его как два отдельных числа. плавать или двойной