есть число типа 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 //задание хексадецимальной надписи (есть ещё научная и я не помню какая)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей