есть число типа double, например 4.64452675
как в С++ сделать округление до N знаков после запятой? либо отсечение? не нашел нужной функции
static const double powerOfTen[] = { 1.0, 10.0, 100.0, ... };
double truncated = std::trunc(d * powerOfTen[N]) / powerOfTen[N];
double rounded = std::floor(d * powerOfTen[N] + 0.5) / powerOfTen[N];
#include <iostream>
#include <cstdlib>
#include <cmath> // для round
using namespace std;
int main(int argc, char** argv)
{
double value = 4.64459675;
// Положительные числа
cout << round(value*10)/10. << endl; // Округление до первого знака
cout << round(value*100)/100. << endl; // второго
cout << round(value*1000)/1000. << endl; // третьего
cout << round(value*10000)/10000. << endl; // четвертого
// Отрицательные числа
cout << round(-value*10)/10. << endl; // Округление до первого знака
cout << round(-value*100)/100. << endl; // второго
cout << round(-value*1000)/1000. << endl; // третьего
cout << round(-value*10000)/10000. << endl; // четвертого
return EXIT_SUCCESS;
}
Результат:
4.6
4.64
4.645
4.6446
-4.6
-4.64
-4.645
-4.6446
В стримах (типа std::wstringstream)есть такое:
std::setw(4): wstream<<std::setw(4) //задание 4 знаков
И std::hex: wstream<< std::hex //задание хексадецимальной надписи (есть ещё научная и я не помню какая)
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу программу на CUDA для решения одной NP-полной задачиСобственно вопрос в чем - если программа выполняется менее чем за 2 сек все ок, если больше...
я написал функцию, которая создает двумерный динамический массив, а затем заполняет его нулямиНо при выводе его на экран там не нули
Последовательный алгоритм сортировки Шейкера понятенНо как быть с параллельным? Не понятно, что должны выполнять каждый из процессорных...
Доброй ночи!) Это наверное больше тема для обсуждения человека, который плохо разобрался в юнит тестировании, но уже задался вопросамиВопрос...