C/C++
Преобразовать заданное вещественное число в строку символов с указанием количества разрядов после разделителя целой c++
преобразовать заданное вещественное число в строку символов с указанием количества разрядов после разделителя целой и дробной части
Если требуется вывести больше количество знаков после разделителя (запятой или точки) целой и дробной части, то возможны неточности из-за проблемы дробных числе в Си и C++. Они неправильно переводятся в десятичную систему.
#include
#include
#include
using namespace std;
int tens(int n, int t)
{
if(t == 0)
return 1;
else if(t < 0)
exit(1);
while(t > 1)
{
n *= 10;
t--;
}
return n;
}
string double_to_string(double number, const unsigned count)
{
string s = ""s;
int x,y;
double num = number;
int tmp;
bool minus = false;
if(num < 0.0)
{
// s.insert (s.begin(), '-');
minus = true;
num *= -1.0;
}
if(num < 1.0)
s.insert (s.begin(), '0');
y = 0;
while(num >= 1.0)
{
tmp = num;
x = (tmp / tens(10, y)) % 10;
s.insert (s.begin(), x + '0');
num -= x * tens(10,y);
y++;
}
y = 0;
if(count)
s.insert(s.end(), '.');
while(y < count)
{
num *= 10.0;
tmp = num;
x = tmp % 10;
s.insert(s.end(), x + '0');
num -= x;
y++;
}
if(minus)
s.insert (s.begin(), '-');
return s;
}
int main()
{
double n;
string str;
unsigned c;
cout > n;
cout > c;
str = double_to_string(n,c);
cout
out = std::format(":.5f",3.1415926); //C++20
Похожие вопросы
- Определение числа в строке int или float
- Ошибка с русскими символами в языке C++ программе xcode. Пропадает если указать большее количество элементов в строке.
- Ввести с клавиатуры символ и преобразовать его в символ верхнего регистра. Как сделать без библиотеки string?
- Задан одномерный массив целых чисел создать код на C++
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- Как в с++ можно ввести строку заданную через указатель
- Сделать перестановку чисел с помощью функции в C++, но у меня получается чепуха
- Как узнать количество символов в UTF8 массиве?(Си)
- Двумерный динамический массив с неизвестны количеством столбиков или строк
- С++. БЕЗ ИСПОЛЬЗОВАНИЯ АДРЕСОВ И УКАЗАТЕЛЕЙ. Пусть дано натуральное число n и вещественная матрица размером n x 10.
double num = 123.45678;
int precision = 2; // количество разрядов после разделителя
std::string str_num = std::to_string(num);
size_t pos = str_num.find('.');
if (pos != std::string::npos) {
str_num = str_num.substr(0, pos + precision + 1);
}
std::cout << str_num << std::endl;
return 0;
}
Здесь переменная num содержит вещественное число, а переменная precision задает количество разрядов после разделителя. Функция std::to_string() используется для преобразования числа в строку символов. Затем производится поиск позиции разделителя в строке и обрезка строки до нужного числа знаков после разделителя.
©oleg