Округление до N знаков после запятой в с++

314
19 декабря 2016, 20:11

есть число типа double, например 4.64452675

как в С++ сделать округление до N знаков после запятой? либо отсечение? не нашел нужной функции

Answer 1
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];
Answer 2
#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
Answer 3

В стримах (типа std::wstringstream)есть такое:

std::setw(4): wstream<<std::setw(4) //задание 4 знаков

И std::hex: wstream<< std::hex //задание хексадецимальной надписи (есть ещё научная и я не помню какая)

READ ALSO
Выполнение Kernel CUDA длительное время на Win7

Выполнение Kernel CUDA длительное время на Win7

Пишу программу на CUDA для решения одной NP-полной задачиСобственно вопрос в чем - если программа выполняется менее чем за 2 сек все ок, если больше...

303
Работа функций пользователя

Работа функций пользователя

я написал функцию, которая создает двумерный динамический массив, а затем заполняет его нулямиНо при выводе его на экран там не нули

274
Сортировка Шейкера: распараллелить

Сортировка Шейкера: распараллелить

Последовательный алгоритм сортировки Шейкера понятенНо как быть с параллельным? Не понятно, что должны выполнять каждый из процессорных...

439
Вопрос по реализации, unit testing

Вопрос по реализации, unit testing

Доброй ночи!) Это наверное больше тема для обсуждения человека, который плохо разобрался в юнит тестировании, но уже задался вопросамиВопрос...

264