iomanip — C ++, как показать точные цифры дробной части

Есть ли способ в 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,

0

Решение

Как насчет чего-то вроде:

#include <cmath>
using namespace std;

cout << setprecision(ceil(log10(floor(x))+3) << x;

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]