Точность имеет значение: изучение манипуляций с десятичной запятой в C++

При работе с числами в C++ важно понимать, как контролировать точность десятичных знаков. Независимо от того, занимаетесь ли вы финансовыми расчетами, научными расчетами или анализом данных, крайне важно контролировать количество цифр после десятичной точки. В этой статье блога мы рассмотрим несколько методов и примеры кода для управления десятичными точками в C++.

Метод 1. Использование функции setprecisionиз библиотеки :
Библиотека предоставляет setprecision, которая позволяет вам установить желаемую точность для чисел с плавающей запятой. Вот пример:

#include <iostream>
#include <iomanip>
int main() {
    double number = 3.14159265359;
    std::cout << std::fixed << std::setprecision(2) << number << std::endl;
    return 0;
}

Выход:

3.14

Метод 2. Использование функции printfиз библиотеки :
Библиотека предоставляет printf, которая обеспечивает точный контроль над форматированием чисел, включая количество десятичных знаков. Вот пример:

#include <cstdio>
int main() {
    double number = 3.14159265359;
    std::printf("%.2f\n", number);
    return 0;
}

Выход:

3.14

Метод 3: умножение и деление в степени 10.
Альтернативный метод управления количеством десятичных знаков — умножение или деление числа на степень 10, а затем усечение или округление результата. Вот пример:

#include <iostream>
#include <cmath>
int main() {
    double number = 3.14159265359;
    int decimalPlaces = 2;
    double factor = std::pow(10, decimalPlaces);
    double result = std::round(number * factor) / factor;
    std::cout << result << std::endl;
    return 0;
}

Выход:

3.14

В этой статье мы рассмотрели три метода управления количеством цифр после десятичной точки в C++. Используя функцию setprecisionиз библиотеки , функцию printfиз библиотеки , или путем умножения и деления на степени 10 вы можете добиться желаемой точности чисел с плавающей запятой. Не забудьте выбрать метод, который лучше всего соответствует вашему конкретному случаю использования и требованиям.