вывод в поток float чисел с точностью

У меня проблема с точностью чисел float:

int main(void) {
  double b = 106.829599;
  float a = b;
  std::cerr << std::setprecision(6) << "a = " << a << "; b = " << b << std::endl;
  std::cerr << std::setprecision(7) << "a = " << a << "; b = " << b << std::endl;
}

результат:

a = 106.83; b = 106.83

a = 106.8296; b = 106.8296

Итак, мой вопрос: почему числа в первой строке такие короткие (я ожидал увидеть 106.829)

gcc 4.1.2, также я сделал тест на LWS

5
задан Jav_Rock 27 January 2012 в 08:01
поделиться