2015-10-24 3 views
-2

Я пытаюсь сделать 2 целых числа в поплавках с помощью static_cast. Проблема в том, что когда я делаю математику, я получаю 4 вместо 4.00.Static Cast (int) to (float) без десятичных знаков

Ниже я привел пример кода.

#include <iostream> 
#include <string> 
#include <vector> 
using namespace std; 

int main() 
{ 
    int num = 4, 
     den = 1; 

    cout << static_cast<float>(num)/static_cast<float>(den); 
} 

Если я делаю это неправильно, укажите, где я ошибаюсь. Также, пожалуйста, укажите, есть ли способ получить 4,00 вместо 4?

+0

http://stackoverflow.com/questions/14677448/how-to-cout-a-float-number-with-n- decimal-places –

+2

Возможный дубликат [Как напечатать двойное значение с полной точностью с помощью cout?] (http://stackoverflow.com/questions/554063/how-do-i-print-a-double-value-with -full-precision-using-cout) – Eelke

+1

В чем разница между 4.00 и 4? Тем не менее, чтобы избежать этих бесполезных бросков, создайте float-литералы: 'float num = 4.0f;'. Как правило, всякий раз, когда вы чувствуете соблазн добавить приведение для компиляции кода или для его компиляции без предупреждений, вы использовали неправильный тип для начала. –

ответ

2

Объединение, что написано Натаном и Eelke, использовать плавающую точку формата флаг fixed вместе с setprecision Parametric манипулятором, доступным в iomanip библиотеки.
Вот что любит ваш код выглядеть, после необходимых изменений: `

#include <iostream> 
#include <iomanip> 

int main() 
{ 
    int num = 4, 
    den = 1; 
    std::cout << std::fixed << std::setprecision(2) << 
      static_cast<float>(num)/static_cast<float>(den); 
    return 0; 
} 
Смежные вопросы