C++ десятичное форматирование вывода

Я пишу двойное значение в файл. Числовое значение записывается с точкой в ​​качестве десятичного разделителя. Я хотел бы использовать запятую. Как я могу это сделать?

3 ответа

Решение

Обычным способом является использование локали с десятичным разделителем, установленным на запятую. Если ваша машина сконфигурирована для этого, вы можете просто использовать для нее безымянную локаль:

std::cout.imbue(std::locale(""));
std::cout << 12345.67;

Вы можете найти ответ в предыдущем вопросе. Это в основном меняет локаль, используемую потоками, которые вы используете.

Я думаю в библиотеке cmath

есть функция с именем modf, которая принимает число с плавающей запятой или двойное число, и указатель на число с плавающей запятой или двойное число и возвращает целое число.

double intPart;
double fractPart;
fractPart = modf(doubleValue, &intPart);

Таким образом, вы передаете двойное значение, оно возвращает десятичную часть как целое число, а целочисленное значение сохраняется в указателе, который вы передали.

Затем вы можете записать их в файл так, как вы хотите, с запятой в середине или чем-то еще, просто запишите его как два отдельных числа. плавать или двойной

Другие вопросы по тегам