Есть ли способ в C ++ (или повысить lib), чтобы показать заданное число цифр дробной части? Но я не хочу печатать конечный 0 в дробной части (например, 1.000
, 1.500
). Смотрите этот случай:
cout << std::setprecision(3) << 5.0/7.0 << endl; // 0.714
cout << std::setprecision(3) << 12.0/7.0 << endl; // 1.71
cout << std::setprecision(3) << 7.0/7.0 << endl; // 1
cout << std::setprecision(3) << 10.5/7.0 << endl; // 1.5
Проблема в setprecision
печатает строки 1 и 2 по-разному, где я хочу, чтобы обе строки печатали 0.714
а также 1.714
, И все же держите строку 3 и строку 4 1
а также 1.5
,
Как насчет чего-то вроде:
#include <cmath>
using namespace std;
cout << setprecision(ceil(log10(floor(x))+3) << x;
Не совсем быстро, но идея состоит в том, чтобы выяснить, сколько цифр требуется для целой части x, а затем добавить к этому число интересующих вас десятичных разрядов. Вы могли бы даже написать свой собственный манипулятор, чтобы сделать это, если бы вы действительно серьезно относились к этому.
Других решений пока нет …