Зачем использовать showpoint, если вы можете использовать setprecision fixed?
Я не совсем понимаю цель showpoint, я знаю, что она заставляет показывать десятичную точку, но наличия "cout << setprecision << fixed" достаточно без использования showpoint.
Можете ли вы показать мне пример, где showpoint является обязательным?
2 ответа
При покрытии большого диапазона значений может быть желательно иметь логику форматирования для переключения между использованием фиксированной точки и научной нотации, при этом все еще требуя десятичной точки. Если вы посмотрите на вывод этого примера, то увидите, что это не просто запись с фиксированной запятой:
#include <iostream>
int main() {
for (double value(1e15), divisor(1); divisor < 1e20; divisor *= 10) {
std::cout << std::noshowpoint << (value / divisor) << '\t'
<< std::showpoint << (value / divisor)
<< '\n';
}
}
Это дает выход
1e+15 1.00000e+15
1e+14 1.00000e+14
1e+13 1.00000e+13
1e+12 1.00000e+12
1e+11 1.00000e+11
1e+10 1.00000e+10
1e+09 1.00000e+09
1e+08 1.00000e+08
1e+07 1.00000e+07
1e+06 1.00000e+06
100000 100000.
10000 10000.0
1000 1000.00
100 100.000
10 10.0000
1 1.00000
0.1 0.100000
0.01 0.0100000
0.001 0.00100000
0.0001 0.000100000
Если точность равна 0 и showpoint
не используется, десятичная точка не появляется, иначе она появляется:
#include <iostream>
#include <iomanip>
int
main()
{
double pi = 2646693125139304345./842468587426513207.;
std::cout << std::fixed << std::setprecision(0);
std::cout << pi << '\n';
std::cout << std::showpoint;
std::cout << pi << '\n';
}
Должен выводить:
3
3.