2012-09-16 3 views
35

Можно создать дубликат:
Why can't I return a double from two ints being dividedРазделив два целых числа для получения результата с плавающей точкой

Моя программа C++ является усечение выход моего целого DeVision даже когда я пытаюсь и поместить вывод в плавать. Как я могу предотвратить это, сохраняя эти переменные (a & b) целыми числами?

[email protected]:~/c/precision$ cat precision.cpp 
#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    int a = 10, b = 3; 
    float ans = (a/b); 
    cout<<fixed<<setprecision(3); 
    cout << (a/b) << endl; 
    cout << ans << endl; 
    return 0; 
} 

[email protected]:~/c/precision$ g++ -o precision precision.cpp 
[email protected]:~/c/precision$ ./precision 
3 
3.000 
+1

поплавка ANS = ((поплавок) а/б); (или static_cast, чтобы порадовать пуристов) – Vlad

+0

Да, моя ошибка, у меня был обыск, но я не нашел этого сообщения. Это дуп, мой плохой! – jwbensley

ответ

60

В ролях операнды к поплавками:

float ans = (float)a/(float)b; 
+0

Кроме того, поплавки имеют только такую ​​точность. Для вашего целочисленного деления может потребоваться «двойная точность» 'double' –

+15

Строго говоря, вам нужно всего лишь наложить одно целое число на float, хотя это делает его более ясным. – Gerard

+0

'INT K; \t K/3; 'Здесь'/'будет вызван для класса' '' '', то в чем причина того, что кто-либо из одного и того же номинатора или знаменателя будет работать? – UnKnown

 Смежные вопросы

  • Нет связанных вопросов^_^